KR102646200B1 - eBPF(XDP)를 활용한 효율적 패킷 전송 방법 및 이를 위한 컴퓨팅 장치 - Google Patents

eBPF(XDP)를 활용한 효율적 패킷 전송 방법 및 이를 위한 컴퓨팅 장치 Download PDF

Info

Publication number
KR102646200B1
KR102646200B1 KR1020230188335A KR20230188335A KR102646200B1 KR 102646200 B1 KR102646200 B1 KR 102646200B1 KR 1020230188335 A KR1020230188335 A KR 1020230188335A KR 20230188335 A KR20230188335 A KR 20230188335A KR 102646200 B1 KR102646200 B1 KR 102646200B1
Authority
KR
South Korea
Prior art keywords
service
container
packet
ingress
xdp
Prior art date
Application number
KR1020230188335A
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 KR1020230188335A priority Critical patent/KR102646200B1/ko
Application granted granted Critical
Publication of KR102646200B1 publication Critical patent/KR102646200B1/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/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0236Filtering by address, protocol, port number or service, e.g. IP-address or URL

Landscapes

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

Abstract

본 발명은 eBPF(XDP)를 활용한 효율적 패킷 전송 방법 및 이를 위한 컴퓨팅 장치에 관한 것으로, 본 발명에 따른 방법은 패킷이 네트워크 드라이버에 도착하면, 네트워크 드라이버에서 실행되는 XDP 프로그램이 패킷의 목적지 IP 주소를 확인하는 단계, 패킷의 목적지 IP 주소가 서비스 IP 주소이면, 서비스 IP 주소에 대응하는 인그레스 컨테이너로 패킷을 리다이렉트하는 단계, 패킷을 전달받은 인그레스 컨테이너에서 패킷에 대해 미리 정해진 적합성 검사를 수행한 후, 로드 밸런싱 규칙에 따라 정해지는 서비스 컨테이너로 오버레이 네트워크를 통해 패킷을 전달하는 단계를 포함한다.

Description

eBPF(XDP)를 활용한 효율적 패킷 전송 방법 및 이를 위한 컴퓨팅 장치{Efficient packet transmission method using eBPF (XDP) and computing device for the same}
본 발명은 컨테이너 가상화 환경에서 eBPF(XDP)를 활용한 효율적 패킷 전송 방법 및 이를 위한 컴퓨팅 장치에 관한 것이다.
클라우드 기반 보안 서비스(SECaaS)는 고객이 원하는 다양한 보안 기능을 구독형 과금 방식으로 제공하는 모델이다.
웹 방화벽(Web Application Firewall)이나 시큐어 인터넷 액세스(Secure Internet Access) 같은 보안 서비스들을 VM(Virtual Machine) 또는 컨테이너 형태로 SECaaS(Security as a Service) 서비스를 할 수 있다.
컨테이너 형태로 서비스를 제공할 때 많이 사용하는 패킷 전달 방법은 다음과 같다.
도 1 및 도 2는 종래 컨테이너 형태로 서비스를 제공할 때 많이 사용하는 패킷 전달 방법을 예시적으로 나타낸 도면이다.
도 1에 예시한 것과 같이 호스트로 들어온 패킷이 DNAT 룰에 부합하면 해당 보안 서비스 컨테이너로 보내는 방식, 또는 도 2에 예시한 것과 같이 패킷이 보안 서비스 컨테이너로 가기 전 인그레스 네트워크(Ingress Network)를 배치하여 IPVS(IP Virtual Server)가 적절한 보안 서비스 컨테이너에 전달하는 방식 등이 있다.
그런데 위와 같은 형태의 서비스들은 몇 가지 문제점을 갖고 있다.
도 1에 예시한 것과 같은 방식에서는, 최초 호스트의 네트워크 스택을 반드시 거치고 각 컨테이너 진입마다 컨테이너 네트워크 스택을 수행한다. 그리고 인그레스 네트워크가 없으면 호스트 iptables를 이용해서 적절한 룰이 추가될 것이고 패킷마다 검사하기에 룰이 많아질수록 느려진다. 한편 도 2에 예시한 것과 같은 방식에서는 인그레스 네트워크가 있으면 보안 서비스 컨테이너로 가기 위한 경로가 복잡해진다.
본 발명이 해결하고자 하는 기술적 과제는 컨테이너 가상화 환경에서 eBPF(XDP)를 활용한 효율적 패킷 전송 방법 및 이를 위한 컴퓨팅 장치를 제공하는 것이다.
상기한 기술적 과제를 해결하기 위한 본 발명에 따른 컴퓨팅 장치는, 복수 개의 도커 서비스 - 상기 도커 서비스는 동일 서비스를 제공하는 서비스 컨테이너를 복수 개 포함함 -; 복수 개의 인그레스 컨테이너 - 상기 복수 개의 인그레스 컨테이너는 서로 다른 서비스 IP 주소가 할당되고, 서비스 IP 주소는 상기 복수 개의 도커 서비스에서 제공하는 서비스 종류별로 미리 정해져 있음 -; 및 네트워크 드라이버에 로딩되어 실행되는 XDP 프로그램을 포함한다.
상기 XDP 프로그램은 상기 네트워크 드라이버에 도착한 패킷의 목적지 IP 주소를 확인하고, 상기 복수 개의 인그레스 컨테이너 중에서 상기 목적지 IP 주소에 대응하는 서비스 IP 주소가 할당된 인그레스 컨테이너로 상기 패킷을 전달한다.
상기 패킷을 전달받은 인그레스 컨테이너는 미리 정해진 로드 밸런싱 규칙에 따라 정해지는 서비스 컨테이너에 오버레이 네트워크를 통해 상기 패킷을 전달한다.
상기 복수 개의 인그레스 컨테이너는 제1 인그레스 컨테이너와 제2 인그레스 컨테이너를 포함할 수 있고, 상기 제1 인그레스 컨테이너와 상기 제2 인그레스 컨테이너는 서로 독립되게 구성된 각각의 오버레이 네트워크를 통해 대응하는 서비스 컨테이너와 통신할 수 있다.
상기 인그레스 컨테이너는, 상기 인그레스 컨테이너에 대응된 도커 서비스가 복수 개인 경우, 상기 패킷에 포함된 도메인 이름에 대응하는 도커 서비스 측으로 상기 패킷을 전달할 수 있다.
상기 컴퓨팅 장치는 상기 컴퓨팅 장치의 호스트 디폴트 네임스페이스(Host default namespace)에서 실행되는 컨테이너 관리 데몬과 XDP 관리 데몬을 더 포함할 수 있다.
상기 XDP 관리 데몬은 상기 XDP 프로그램에 상기 복수 개의 인그레스 컨테이너 각각에 대응하는 서비스 IP 주소가 맵핑된 패킷 전달 규칙을 설정하여 상기 컴퓨팅 장치의 네트워크 드라이버에 로딩할 수 있다.
상기 컨테이너 관리 데몬은 상기 복수 개의 서비스 컨테이너를 도커 서비스 형태로 생성하고 관리할 수 있다.
상기한 기술적 과제를 해결하기 위한 본 발명에 따른 컴퓨팅 장치에 적용되는 패킷 전송 방법은, 패킷이 네트워크 드라이버에 도착하면, 상기 네트워크 드라이버에서 실행되는 XDP 프로그램이 상기 패킷의 목적지 IP 주소를 확인하는 단계, 상기 패킷의 목적지 IP 주소가 서비스 IP 주소이면, 상기 서비스 IP 주소에 대응하는 인그레스 컨테이너로 상기 패킷을 리다이렉트하는 단계, 상기 패킷을 전달받은 인그레스 컨테이너에서 상기 패킷에 대해 미리 정해진 적합성 검사를 수행한 후, 로드 밸런싱 규칙에 따라 정해지는 서비스 컨테이너로 오버레이 네트워크를 통해 상기 패킷을 전달하는 단계를 포함한다.
상기한 기술적 과제를 해결하기 위한 본 발명에 따른 컴퓨터 판독 가능 기록매체에 저장된 컴퓨터 프로그램은, 적어도 하나의 프로세서에 의해 실행되면 상기 방법을 실행시킨다.
상기한 기술적 과제를 해결하기 위한 본 발명에 따른 컴퓨팅 장치는 프로세서; 및 상기 프로세서에 의해 실행 가능한 인스트럭션 또는 프로그램을 저장하는 메모리; 를 포함하고, 상기 인스트럭션 또는 프로그램이 상기 프로세서에 의해 실행되면, 상기 방법이 실행된다.
본 발명에 의하면, 네트워크 드라이버에서 실행되는 XDP 프로그램이 서비스 패킷을 호스트 커널 네트워크 스택을 경유하지 않고, ingress 컨테이너를 통해 서비스 컨테이너로 바로 전달함으로써 빠르고 자원 활용면에서 효율적이다. XDP 프로그램에서 패킷의 IP를 보고 redirect 하므로 서비스 IP를 이용하여 해킹당해도 호스트에 영향이 없다. ingress 컨테이너가 패킷 적합성 검사를 진행 후 LB(Load Balancing)를 하기에 서비스 컨테이너에서 불필요한 자원을 사용하지 않는다. overlay 네트워크 구성으로 ingress 컨테이너와 서비스 컨테이너 간에 통신이 직관적이고 보안성이 높다. 도커 서비스 형태로 컨테이너가 생성되어 보안 서비스 컨테이너의 확장에 용이하다.
도 1 및 도 2는 종래 컨테이너 형태로 서비스를 제공할 때 많이 사용하는 패킷 전달 방법을 예시적으로 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 컴퓨팅 장치의 구성을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 컴퓨팅 장치에서 패킷 처리 순서를 나타낸 흐름도이다.
이하 첨부된 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시 예를 상세히 설명한다. 그러나 이들 실시 예는 본 발명을 보다 구체적으로 설명하기 위한 것으로, 본 발명의 범위가 이에 의하여 제한되지 않는다는 것은 당업계의 통상의 지식을 가진 자에게 자명할 것이다.
본 발명이 해결하고자 하는 과제의 해결 방안을 명확하게 하기 위한 발명의 구성을 본 발명의 바람직한 실시 예에 근거하여 첨부 도면을 참조하여 상세히 설명하되, 도면의 구성요소들에 참조번호를 부여함에 있어서 동일 구성요소에 대해서는 비록 다른 도면상에 있더라도 동일 참조번호를 부여하였으며 당해 도면에 대한 설명시 필요한 경우 다른 도면의 구성요소를 인용할 수 있음을 미리 밝혀둔다. 아울러 본 발명의 바람직한 실시 예에 대한 동작 원리를 상세하게 설명함에 있어 본 발명과 관련된 공지 기능 혹은 구성에 대한 구체적인 설명 그리고 그 이외의 제반 사항이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우, 그 상세한 설명을 생략한다.
덧붙여, 명세서 전체에서, 어떤 부분이 다른 부분과 '연결'되어 있다고 할때, 이는 '직접적으로 연결'되어 있는 경우뿐만 아니라, 그 중간에 다른 소자를 사이에 두고 '간접적으로 연결'되어 있는 경우도 포함한다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작, 또는 소자 외에 하나 이상의 다른 구성요소, 단계, 동작, 또는 소자의 존재 또는 추가를 배제하지 않는다.
도 3은 본 발명의 일 실시예에 따른 컴퓨팅 장치의 구성을 설명하기 위한 도면이다.
도 3을 참고하면, 본 발명의 일 실시예에 따른 컴퓨팅 장치(100)는 클라우드 시스템을 구성하는 엣지(노드) 컴퓨팅 장치이다.
컴퓨팅 장치(100)는 컨테이너 관리 데몬(Daemon)(110), XDP 관리 데몬(120), XDP 프로그램(130), 복수 개의 인그레스(ingress) 컨테이너(141, 142) 및 복수 개의 도커 서비스(Docker Service)(151, 152, 153)를 포함할 수 있다.
컨테이너 관리 데몬(110)과 XDP 관리 데몬(120)은 컴퓨팅 장치(100)의 호스트 디폴트 네임스페이스(Host default namespace)(170)에서 실행될 수 있다.
XDP 관리 데몬(120)은 XDP(eXpress Data Path) 프로그램(130)을 컴퓨팅 장치(100)의 네트워크 드라이버에 로딩하고 관리하는 기능을 수행한다.
XDP 프로그램(130)은 eBPF(extended Berkeley Packet Filter) 기술을 활용해 리눅스 네트워크 드라이버에서 실행가능한 프로그램 타입으로 구현될 수 있으며, 본 실시예에서 native 모드를 사용할 수 있다. native 모드는 컴퓨팅 장치(100)의 네트워크 드라이버에서 실행가능하고 sk_buff 할당 전에 패킷을 처리할 수 있어 리눅스 커널 스택보다 먼저 패킷의 처리가 가능하다.
XDP 관리 데몬(120)은 패킷 전달 규칙을 설정하여 XDP 프로그램(130)을 네트워크 드라이버에 로딩할 수 있다. 여기서 패킷 전달 규칙은 MAP 형태로 구현될 수 있는데, 서비스 IP 주소마다 그에 대응하는 인그레스 컨테이너(141, 142)가 맵핑되고, 관리 IP 주소는 호스트(Host)에 대응될 수 있다.
복수 개의 인그레스 컨테이너(141, 142)는 각각 서로 다른 서비스 IP 주소가 할당된다. 도 3에서 인그레스 컨테이너(141)는 '서비스 IP A', 인그레스 컨테이너(142)는 '서비스 IP B'가 할당되어 있는 것을 예시적으로 나타내고 있다.
서비스 IP 주소는 컨테이너(container A, container B)에서 제공하는 서비스 종류에 따라 미리 정해져 있을 수 있다. 예컨대 container A가 제공하는 서비스 종류가 A이고, container B가 제공하는 서비스 종류가 B로 다른 경우, 서비스 A와 서비스 B에 각각 서비스 IP 주소를 '서비스 IP A'와 '서비스 IP B'로 미리 정하고, 각각의 서비스 종류에 대응하는 인그레스 컨테이너(141, 142)에 각각 '서비스 IP A'와 '서비스 IP B'를 미리 할당해놓을 수 있다.
XDP 프로그램(130)은 네트워크 드라이버에 도착한 패킷의 목적지 IP 주소를 확인하고, 목적지 IP 주소가 서비스 IP 주소이면, 대응하는 서비스 IP 주소가 할당된 인그레스 컨테이너(141, 142)로 해당 패킷을 redirect 할 수 있다. 그리고 XDP 프로그램(130)은 네트워크 드라이버에 도착한 패킷의 목적지 IP 주소가 관리 IP 주소이면 Host로 해당 패킷을 패스할 수 있다.
컨테이너 관리 데몬(110)은 도커 서비스(151, 152, 153)를 관리하는 기능을 수행한다. 컨테이너 관리 데몬(110)은 도커 서비스 형태로 컨테이너(Container)를 컴퓨팅 장치(100)에 생성 및 관리하는 기능을 수행한다.
여기서 도커 서비스는 동일한 이미지에서 생성된 복수 개의 컨테이너를 포함하는 컨테이너 집합이다. 동일한 도커 서비스에 속한 컨테이너는 동일 서비스를 제공한다. 이하에서 인그레스 컨테이너와 구분을 위해 도커 서비스에 속한 컨테이너는 서비스 컨테이너라고 부른다.
도 3에 예시한 것과 같이 동일한 서비스를 제공하는 도커 서비스(151, 152)가 복수로 생성될 수 있다. 예를 들어 서로 다른 고객에게 동일한 서비스를 제공하는 경우, 각 고객별로 도커 서비스를 생성할 수 있다.
컨테이너 관리 데몬(110)은 도커 데몬(dockred)과 연동하여 도커 서비스를 생성하거나 삭제할 수 있으며, 도커 서비스의 서비스 컨테이너 개수를 관리하고, 서비스 컨테이너의 상태를 모니터링할 수 있다.
구체적으로 컨테이너 관리 데몬(110)은 센터(200)로부터 서비스 컨테이너 생성과 통신에 필요한 데이터(예컨대, 고객 정보, 엣지(노드) 정보 등)를 전달받으면, 해당 고객 정보 및 엣지 정보를 조합해서 도커 서비스 ID를 만들고, 도커 서비스를 생성할 수 있다. 그리고 서비스 컨테이너가 공격 트래픽을 탐지하는 보안 서비스를 제공하는 경우, 컨테이너 관리 데몬(110)은 해당 서비스 컨테이너가 생성되면, 해당 서비스 컨테이너를 통해 보안 서비스를 제공받는 고객이 설정한 정책을 메모리에 올려 서비스 준비를 할 수 있다.
서비스 컨테이너(container A, container B)가 보안 서비스 컨테이너인 경우, 서비스 컨테이너(container A, container B)는 미리 정해진 정책에 맞게 패킷에 대한 검사 및 로그를 남기면서 프록시(Proxy) 역할을 수행할 수 있다.
앞에서 고객 정보는 고객사 ID, 고객사 도메인 이름 등을 포함할 수 있다. 그리고 고객 정보는 해당 고객이 이용하는 서비스 종류 정보(예컨대 보안 서비스 A, 보안 서비스 B를 식별하는 정보)를 포함할 수 있다.
엣지 정보는 해당 엣지(100)가 위치한 나라, 리전정보, 엣지번호 등을 포함할 수 있다.
여기서 제시한 고객 정보 및 엣지 정보는 예시일 뿐이고, 컴퓨팅 장치(100)에서 생성되는 도커 서비스의 ID(Docker Service ID)를 고객 및 서비스 종류에 따라 고유하게 생성할 수 있는 정보이면 된다.
인그레스 컨테이너(141, 142)는 컨테이너 관리 데몬(110)과 마찬가지로 컨테이너 생성과 통신에 필요한 데이터를 센터(200)로부터 전달받으면, 해당 고객 정보 및 엣지 정보를 조합해서 만든 Docker Service ID를 도커 데몬(dockred)에 질의하여, Docker Service ID에 대응하여 생성된 컨테이너의 IP 리스트를 전달받아 메모리에 캐싱할 수 있다.
인그레스 컨테이너(141, 142)는 컨테이너의 IP 리스트를 이용하여 자신에 대응하는 도커 서비스에 속한 컨테이너의 헬스체크를 시작할 수 있으며, 도커 서비스가 삭제되면 헬스체크를 중단할 수 있다.
인그레스 컨테이너(141, 142)는 XDP 프로그램(130)으로부터 서비스 IP 주소가 목적지로 설정된 서비스 패킷이 도착하면, 최소한의 미리 정해진 적합성 검사를 먼저 수행한 후 오버레이 네트워크를 통해 자신에 대응되어 있는 도커 서비스로 패킷을 전달할 수 있다. 예를 들어 인그레스 컨테이너(141, 142)는 http헤더의 Host명, https에서 사용하는 Client Hello 패킷의 SNI 필드 등의 적합성 검사를 수행할 수 있다.
예를 들어 인그레스 컨테이너(141)에 복수 개의 도커 서비스(151, 152)가 대응되어 있는 경우, 인그레스 컨테이너(141)는 서비스 패킷에 포함된 도메인 이름 확인하고, 그에 대응하는 Docker Service ID를 가지는 도커 서비스 측으로 패킷을 전달할 수 있다. 예를 들어 서비스 패킷이 HTTP 패킷인 경우 HTTP 헤더에서 도메인 이름을 확인하고, 해당 도메인 이름에 대응하는 Docker Service ID의 도커 서비스 측으로 패킷을 전달할 수 있다. 이를 위해 도메인 이름과 Docker Service ID가 맵핑된 MAP이 메모리에 미리 준비될 수 있다.
그리고 인그레스 컨테이너(141, 142)는 미리 정해진 로드 밸런싱 규칙에 따라 정해지는 서비스 컨테이너로 해당 패킷을 전달할 수 있다. 이때 인그레스 컨테이너(141, 142)는 헬스체크 결과가 비정상인 서비스 컨테이너는 패킷 전달 대상에서 제외한다.
복수 개의 인그레스 컨테이너(141, 142)는 각각에 할당된 서비스 IP 주소에 대응하는 서비스를 제공하는 도커 서비스(151, 152, 153)와 오버레이 네트워크를 통해 통신할 수 있다. 즉 인그레스 컨테이너(141)와 도커 서비스(151, 152)의 컨테이너(Container A) 사이에 통신을 위한 오버레이 네트워크와, 인그레스 컨테이너(142)와 도커 서비스(153)의 컨테이너(Container B) 사이에 통신을 위한 오버레이 네트워크가 서로 독립적으로 구성될 수 있다.
센터(200)는 클라우드 시스템에서 제공하는 서비스를 관리하며, 도 3에서는 하나의 센터(200)를 도시하였으나, 클라우드 시스템에서 제공하는 서비스 종류별로 센터(200)가 마련되어 있을 수도 있다.
클라우드 시스템에서 A 보안 서비스, B 보안 서비스를 제공한다고 가정할 경우, A 보안 서비스를 관리하는 센터(200)와 B 보안 서비스를 관리하는 센터(200)가 각각 마련될 수 있다. 물론 실시예에 따라서 하나의 센터(200)에서 여러 서비스를 관리하도록 구현하는 것도 가능하다.
센터(200)는 서비스 컨테이너 생성과 통신에 필요한 데이터를 컴퓨팅 장치(100)의 컨테이너 관리 데몬(110) 및 인그레스 컨테이너(141, 142)에 전달할 수 있다. 가령 센터(200)는 A 보안 서비스에 대한 서비스 컨테이너를 생성할 때, 컨테이너 관리 데몬(110)과 A 보안 서비스에 사전에 대응되어 있는 인그레스 컨테이너(141)에 서비스 컨테이너 생성과 통신에 필요한 데이터를 전달할 수 있다. 마찬가지로 B 보안 서비스에 대한 서비스 컨테이너를 생성할 때, 컨테이너 관리 데몬(110)과 B 보안 서비스에 사전에 대응되어 있는 인그레스 컨테이너(142)에 서비스 컨테이너 생성과 통신에 필요한 데이터를 전달할 수 있다.
도 4는 본 발명의 일 실시예에 따른 컴퓨팅 장치에서 패킷 처리 순서를 나타낸 흐름도이다.
도 4를 참고하면, 먼저 패킷이 네트워크 드라이버에 도착하면(S410), XDP 프로그램(130)은 패킷의 목적지 IP 주소를 확인하여 목적지 IP 주소가 서비스 IP 주소이면(S420-Y), 대응하는 서비스 IP 주소가 할당된 인그레스 컨테이너(141, 142)로 해당 패킷을 리다이렉트(redirect)할 수 있다(S430).
한편 패킷의 목적지 IP 주소를 확인하여 목적지 IP 주소가 관리 IP 주소이면(S420-N), XDP 프로그램(130)은 패킷을 호스트로 패스할 수 있다(S440).
단계(S430) 이후, XDP 프로그램(130)으로부터 서비스 패킷을 전달받은 인그레스 컨테이너(141, 142)는 해당 패킷에 대해 적합성 검사를 수행한 후(S450), 로드 밸런싱 규칙에 따라 정해지는 서비스 컨테이너(container A, container B)로 오버레이 네트워크를 통해 해당 패킷을 전달할 수 있다(S460). 한편 단계(S460)에서 인그레스 컨테이너(141, 142)에 대응되어 있는 도커 서비스가 복수 개인 경우, 패킷에 포함된 도메인 이름을 확인하고 해당 도메인 이름에 대응하는 도커 서비스의 컨테이너(container A, container B)로 패킷을 전달할 수 있다.
마지막으로 서비스 컨테이너(container A, container B)는 인그레스 컨테이너(141, 142)로부터 전달받은 패킷을 처리할 수 있다(S470). 예를 들어 보안 서비스 컨테이너인 경우 미리 설정된 정책에 맞게 패킷 검사 및 로그를 남기면서 프록시 역할을 수행할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.

Claims (8)

  1. 컴퓨팅 장치에 있어서,
    복수 개의 도커 서비스 - 상기 도커 서비스는 동일 서비스를 제공하는 서비스 컨테이너를 복수 개 포함함 -;
    복수 개의 인그레스 컨테이너 - 상기 복수 개의 인그레스 컨테이너는 서로 다른 서비스 IP 주소가 할당되고, 서비스 IP 주소는 상기 복수 개의 도커 서비스에서 제공하는 서비스 종류별로 미리 정해져 있음 -; 및
    네트워크 드라이버에 로딩되어 실행되는 XDP 프로그램
    을 포함하고,
    상기 XDP 프로그램은 상기 네트워크 드라이버에 도착한 패킷의 목적지 IP 주소를 확인하고, 상기 복수 개의 인그레스 컨테이너 중에서 상기 목적지 IP 주소에 대응하는 서비스 IP 주소가 할당된 인그레스 컨테이너로 상기 패킷을 전달하며,
    상기 패킷을 전달받은 인그레스 컨테이너는 미리 정해진 로드 밸런싱 규칙에 따라 정해지는 서비스 컨테이너에 오버레이 네트워크를 통해 상기 패킷을 전달하고,
    상기 컴퓨팅 장치는, 상기 컴퓨팅 장치의 호스트 디폴트 네임스페이스(Host default namespace)에서 실행되는 컨테이너 관리 데몬과 XDP 관리 데몬을 더 포함하고,
    상기 XDP 관리 데몬은 상기 XDP 프로그램에 상기 복수 개의 인그레스 컨테이너 각각에 대응하는 서비스 IP 주소가 맵핑된 패킷 전달 규칙을 설정하여 상기 컴퓨팅 장치의 네트워크 드라이버에 로딩하며,
    상기 컨테이너 관리 데몬은 상기 복수 개의 서비스 컨테이너를 도커 서비스 형태로 생성하고 관리하는 컴퓨팅 장치.
  2. 제 1 항에서,
    상기 복수 개의 인그레스 컨테이너는 제1 인그레스 컨테이너와 제2 인그레스 컨테이너를 포함하고,
    상기 제1 인그레스 컨테이너와 상기 제2 인그레스 컨테이너는 서로 독립되게 구성된 각각의 오버레이 네트워크를 통해 대응하는 서비스 컨테이너와 통신하는 컴퓨팅 장치.
  3. 제 1 항에서,
    상기 인그레스 컨테이너는,
    상기 인그레스 컨테이너에 대응된 도커 서비스가 복수 개인 경우, 상기 패킷에 포함된 도메인 이름에 대응하는 도커 서비스 측으로 상기 패킷을 전달하는 컴퓨팅 장치.
  4. 삭제
  5. 컴퓨팅 장치에 적용되는 패킷 전송 방법에 있어서,
    상기 컴퓨팅 장치는 복수 개의 도커 서비스 - 상기 도커 서비스는 동일 서비스를 제공하는 서비스 컨테이너를 복수 개 포함함 -; 복수 개의 인그레스 컨테이너 - 상기 복수 개의 인그레스 컨테이너는 서로 다른 서비스 IP 주소가 할당되고, 서비스 IP 주소는 상기 복수 개의 도커 서비스에서 제공하는 서비스 종류별로 미리 정해져 있음 -; 네트워크 드라이버에 로딩되어 실행되는 XDP 프로그램; 컨테이너 관리 데몬; 및 XDP 관리 데몬을 포함하고,
    상기 컨테이너 관리 데몬과 상기 XDP 관리 데몬은 상기 컴퓨팅 장치의 호스트 디폴트 네임스페이스(Host default namespace)에서 실행되며,
    상기 컨테이너 관리 데몬은 상기 복수 개의 서비스 컨테이너를 도커 서비스 형태로 생성하고 관리하고,
    상기 XDP 관리 데몬이, 상기 XDP 프로그램에 상기 복수 개의 인그레스 컨테이너 각각에 대응하는 서비스 IP 주소가 맵핑된 패킷 전달 규칙을 설정하여, 상기 컴퓨팅 장치의 상기 네트워크 드라이버에 상기 XDP 프로그램을 로딩하는 단계,
    패킷이 상기 네트워크 드라이버에 도착하면, 상기 XDP 프로그램이 상기 패킷의 목적지 IP 주소를 확인하는 단계,
    상기 패킷의 목적지 IP 주소가 서비스 IP 주소이면, 상기 XDP 프로그램이 상기 서비스 IP 주소에 대응하는 인그레스 컨테이너로 상기 패킷을 리다이렉트하는 단계, 및
    상기 패킷을 전달받은 인그레스 컨테이너에서 상기 패킷에 대해 미리 정해진 적합성 검사를 수행한 후, 로드 밸런싱 규칙에 따라 정해지는 서비스 컨테이너로 오버레이 네트워크를 통해 상기 패킷을 전달하는 단계
    를 포함하는 방법.
  6. 제 5 항에서,
    상기 패킷을 리다이렉트하는 단계에서,
    상기 인그레스 컨테이너는,
    상기 인그레스 컨테이너에 대응된 도커 서비스가 복수 개인 경우, 상기 패킷에 포함된 도메인 이름에 대응하는 도커 서비스 측으로 상기 패킷을 전달하는 방법.
  7. 컴퓨터 판독 가능 기록매체에 저장된 컴퓨터 프로그램에 있어서,
    적어도 하나의 프로세서에 의해 실행되면, 제5항 및 제6항 중 어느 한 항에 기재된 방법을 실행시키는 컴퓨터 프로그램.
  8. 컴퓨팅 장치에 있어서,
    프로세서; 및
    상기 프로세서에 의해 실행 가능한 인스트럭션 또는 프로그램을 저장하는 메모리; 를 포함하고,
    상기 인스트럭션 또는 프로그램이 상기 프로세서에 의해 실행되면, 제5항 및 제6항 중 어느 한 항에 기재된 방법이 실행되는 컴퓨팅 장치.
KR1020230188335A 2023-12-21 2023-12-21 eBPF(XDP)를 활용한 효율적 패킷 전송 방법 및 이를 위한 컴퓨팅 장치 KR102646200B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230188335A KR102646200B1 (ko) 2023-12-21 2023-12-21 eBPF(XDP)를 활용한 효율적 패킷 전송 방법 및 이를 위한 컴퓨팅 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230188335A KR102646200B1 (ko) 2023-12-21 2023-12-21 eBPF(XDP)를 활용한 효율적 패킷 전송 방법 및 이를 위한 컴퓨팅 장치

Publications (1)

Publication Number Publication Date
KR102646200B1 true KR102646200B1 (ko) 2024-03-11

Family

ID=90248855

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230188335A KR102646200B1 (ko) 2023-12-21 2023-12-21 eBPF(XDP)를 활용한 효율적 패킷 전송 방법 및 이를 위한 컴퓨팅 장치

Country Status (1)

Country Link
KR (1) KR102646200B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210087399A (ko) * 2020-01-02 2021-07-12 에스알아이 인터내셔널 컨테이너 네트워크를 위한 보안

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210087399A (ko) * 2020-01-02 2021-07-12 에스알아이 인터내셔널 컨테이너 네트워크를 위한 보안

Similar Documents

Publication Publication Date Title
US10812378B2 (en) System and method for improved service chaining
US11397609B2 (en) Application/context-based management of virtual networks using customizable workflows
US11750446B2 (en) Providing shared memory for access by multiple network service containers executing on single service machine
US10693763B2 (en) Asymmetric connection with external networks
US9935829B1 (en) Scalable packet processing service
US11329914B2 (en) User customization and automation of operations on a software-defined network
US10897392B2 (en) Configuring a compute node to perform services on a host
US11025647B2 (en) Providing a virtual security appliance architecture to a virtual cloud infrastructure
US20190140903A1 (en) Dynamic, Load-Based, Auto-Scaling Network Security Microservices Architecture
US20200014663A1 (en) Context aware middlebox services at datacenter edges
EP2888838B1 (en) A framework for networking and security services in virtual networks
US9602308B2 (en) Servicing packets in a virtual network and a software-defined network (SDN)
CN113454598A (zh) 提供具有访客vm移动性的服务
EP2932682B1 (en) Hybrid firewall for data center security
US20150117454A1 (en) Dynamic Generation of Flow Entries for Last-Hop Processing
US10999220B2 (en) Context aware middlebox services at datacenter edge
JP2017153118A (ja) ミドルボックスを構成設定するネットワーク制御システム
US11099826B2 (en) Canary deployment using an application delivery controller
US20140007232A1 (en) Method and apparatus to detect and block unauthorized mac address by virtual machine aware network switches
US9584422B2 (en) Methods and apparatuses for automating return traffic redirection to a service appliance by injecting traffic interception/redirection rules into network nodes
EP4141666A1 (en) Dual user space-kernel space datapaths for packet processing operations
KR102646200B1 (ko) eBPF(XDP)를 활용한 효율적 패킷 전송 방법 및 이를 위한 컴퓨팅 장치
US11711292B2 (en) Pre-filtering of traffic subject to service insertion
US12003429B2 (en) Dual user space-kernel space datapaths for packet processing operations
US20230351024A1 (en) System and method for security scanning and patching sddcs in a multi-cloud environment

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant