profile
커널, 컴파일러, 가상화, 컨테이너, 쿠버네티스, ...

[eBPF] BPF 실행파일 로딩 과정 분석 (메모리 재배치)

BPF 는 일반적인 프로그램과 유사한 방식으로 개발하기 때문에 유사한 실행파일 및 메모리 구조를 가지고 있지만, 커널 안에서 제한된 환경으로 실행되기 때문에 로딩(loading)하는 과정은 상당히 다르다. 오늘은 BPF 의 실행파일 및 메모리 구조에 대해 간단히 살펴본

2일 전
·
0개의 댓글

[eBPF] CO-RE (Compile Once - Run Everywhere) 기능 분석

최근 몇 년간 리눅스 커널 커뮤니티에서 가장 주목받고 있는 기술은 누가 뭐래도 eBPF 일 것이다. 리눅스 커널에 안정성과 확장성, 그리고 생산성을 동시에 부여하는 혁신적인 기술로, 대표적인 쿠버네티스의 CNI 인 Cilium과 Falco, Pixie 등 다양한 오픈소

2021년 9월 8일
·
0개의 댓글

[K8S] 메모리 스와핑 지원 분석

쿠버네티스는 기본적으로 메모리 스와핑을 지원하지 않는다. 20년 넘는 시간동안 운영체제 관련 연구/개발을 수행하면서 메모리 스와핑이 만들어내는 다양한 문제들에 대한 연구를 많이 봤었고, 이러한 문제들때문에 메모리 스와핑을 강제로 막는 경우도 많이 봤었기 때문에 딱히 이

2021년 9월 3일
·
0개의 댓글
post-thumbnail

[K8S] Cilium Socket-based LoadBalancing 에 의한 Istio Envoy 우회 문제 분석

오늘은 Cilium 에서 소켓 기반 로드밸런싱을 이용할 때 발생하는 EnvoyProxy 사이드카 우회 문제에 대해 살펴보고자 한다. 이는 현재 모든 서비스 메쉬(Istio, Linkerd, ...)에서 서비스 IP 기반으로 동작하는 모든 필터를 우회하는 심각한 문제를

2021년 8월 25일
·
1개의 댓글

[K8S] NAT 루프백 문제 분석

오늘은 어떤 국가의 지역 클라우드 서비스를 이용하여 쿠버네티스 클러스터를 구축하던 중 발생했던 NAT 루프백 문제(Hairpin NAT)를 파악하고 해결했던 과정에 대해 간단히 소개하고자 한다. 일반적으로는 크게 신경쓰지 않아도 되는 문제인데, 해당 국가의 클라우드 서

2021년 8월 18일
·
0개의 댓글

[K8S] VXLAN 사용 불가 문제 분석

우리 회사에서는 주로 의료데이터를 다루다보니 개인정보보호법에 의해 서비스를 운영하는 국가 외부로 데이터가 유출되면 안 된다. 그래서 한국이나 미국 같이 AWS 나 GCP 리전이 있는 국가들은 해당 서비스를 이용하여 운영할 수 있지만, 해당 국가에 리전이 없는 경우에는

2021년 8월 11일
·
0개의 댓글
post-thumbnail

[K8S/Cilium] Socket-Based LoadBalancing 기법

Cilium 에서 ClusterIP 서비스로 통신할때 로드밸런싱이 이루어지는 과정은 아래 그림과 같다. 왼쪽 그림은 네트워크 기반 로드밸런싱 방식이고, 오른쪽 그림은 소켓 기반 로드밸런싱 방식이다. 간단한 설명을 위해 백엔드가 같은 노드에 있는 경우만 살펴보자.cili

2021년 7월 2일
·
0개의 댓글
post-thumbnail

[K8S/Cilium] IPVLAN 기반 Cilium 의 NodePort 버그 분석

Cilium 에서 제공하는 IPVLAN 기반의 Routing Datapath 기법을 사용하던 중 NodePort 관련 버그를 발견하였다. (NodePort 는 모든 노드의 지정된 포트로 접속하면 백엔드(선택된 Pod)로 연결해주는 서비스이다.) IPVLAN 을 사용하는

2021년 6월 30일
·
0개의 댓글
post-thumbnail

[K8S/Cilium] 라우팅 기법 성능 평가

쿠버네티스의 CNI 에서 성능에 가장 큰 영향을 미치는 것은 다음 두 가지이다.eBPF vs IPTables (IPVS)Direct Routing vs TunnelingCilium 과 가장 대표적인 CNI 인 Calico 를 이용하여 어느 정도의 성능 차이가 나는지 살

2021년 6월 12일
·
0개의 댓글
post-thumbnail

[K8S/Cilium] bpf_redirect_peer()/bpf_redirect_neigh()

Cilium 에서 VETH 를 기반으로 Pod-To-Pod 통신이 이루어지는 과정은 아래 그림의 왼쪽과 같다.Pod1 의 eth0 으로 패킷을 전달하면 veth1 을 통해 호스트 네트워크 스택으로 패킷이 전달된다.여기에서 목적지 주소를 이용하여 몇 단계의 처리를 거친

2021년 6월 3일
·
0개의 댓글
post-thumbnail

[K8S/Cilium] DSR (Direct Server Return)

Cilium 에서는 외부에서 쿠버네티스 서비스에 접근할 때 사용되는 NodePort, LoadBalancer 등의 성능을 개선할 수 있는 DSR(Direct Server Return) 기능을 제공한다.cilium.dsr위 그림처럼 DSR 의 목적은 Pod(nginx)의

2021년 5월 12일
·
0개의 댓글
post-thumbnail

[K8S/Cilium] NodePort 서비스

외부에서 쿠버네티스 서비스에 접근하는 대표적인 방법 중의 하나는 NodePort 서비스를 이용하는 것이다. NodePort 서비스를 생성하면 30000~32767 사이의 임의의 값이 포트 번호로 할당되고, 선택된 Pod 이 어디에있든 상관없이 모든 노드에서 해당 포트

2021년 5월 12일
·
0개의 댓글
post-thumbnail

[K8S/Cilium] ClusterIP 서비스

일반적으로 쿠버네티스 환경에서는 서비스(Service)를 통해 Pod 과 통신한다. 이는 특정 Pod 에 직접 접속하는 것보다 서비스의 셀렉터를 통해 선택된 여러 Pod 들 중 하나와 통신하는 것이 로드밸런싱이나 고가용성을 보장하는데 더 유리하기 때문이다. 쿠버네티스에

2021년 5월 12일
·
0개의 댓글
post-thumbnail

[K8S/Cilium] IPVLAN 기반 Routing Datapath 기법

Cilium 은 IPVLAN 에 기반한 Routing Datapath 기법을 제공하고 있다. IPVLAN 은 VXLAN 과 마찬가지로 리눅스 커널이 제공하는 기능이므로 IPVLAN 에 대한 자세한 설명은 생략하고, Cilium 의 동작 과정을 설명하면서 필요한 부분에

2021년 5월 12일
·
0개의 댓글
post-thumbnail

[K8S/Cilium] VXLAN 기반 Tunneling Datapath 기법

Cilium 은 VXLAN 에 기반한 Tunneling Datapath 기법을 제공하고 있다. VXLAN 은 리눅스 커널이 제공하는 기능이므로 VXLAN 에 대한 자세한 설명은 생략하고, Cilium 의 동작 과정을 설명하면서 필요한 부분에 대해서만 간단히 부연설명하겠

2021년 5월 12일
·
0개의 댓글