BPF 네트워크 로그¶
BPF 네트워크, 즉 Berkeley Packet Filter(BPF) 기술은 운영체제 커널 수준에서 실행되는 네트워크 데이터 패킷 필터링 기술입니다. 이를 통해 네트워크를 통과하는 데이터 패킷을 캡처하고 필터링하여 네트워크 효율성을 높이고 보안 검사 등을 수행할 수 있습니다. BPF 규칙은 필터 조건을 정의하는 특수 언어로, 데이터 패킷의 소스 IP, 대상 IP, 사용된 프로토콜 유형 또는 포트 번호 등 다양한 필터 기준을 지정할 수 있습니다. 간단히 말해 BPF는 사용자가 설정한 규칙에 따라 원하는 네트워크 데이터 패킷을 선별할 수 있는 고급 네트워크 필터와 같습니다.
고급 Linux 네트워크 데이터 패킷 처리 기술로서, Guance는 BPF 기술을 활용하여 네트워크 트래픽 데이터를 수집 및 표시하고 시각화하여 네트워크 동작을 심층적으로 이해하고 문제를 진단할 수 있도록 지원합니다.
모듈 구성¶
- 4계층 BPF 네트워크 로그(
bpf_net_l4_log): 4계층은 전송 계층으로, 주로 종단 간 데이터 전송을 담당합니다. 이 모듈은 TCP, UDP와 같은 전송 계층 프로토콜 기반의 네트워크 트래픽 정보를 기록합니다. - 7계층 BPF 네트워크 로그(
bpf_net_l7_log): 7계층은 애플리케이션 계층으로, HTTP, FTP 등 구체적인 애플리케이션 프로토콜과 관련됩니다. 이 모듈은 애플리케이션 계층 프로토콜 기반의 네트워크 트래픽 정보를 기록합니다.
4계층 BPF 네트워크 로그¶
로그 탐색기에서 source:bpf_net_l4_log 데이터를 필터링하여 상세 페이지로 이동합니다:
-
패킷 내용: 각 네트워크 흐름의 상세 패킷 내용을 확인하여 다양한 시점과 데이터 패킷 흐름 방향을 직관적으로 표시합니다.
-
데이터 패킷 교환: 클라이언트와 서버 간의 데이터 패킷 교환을 분석합니다.
-
시간 차이: 데이터 패킷 전송의 시간 차이를 기록합니다.
네트워크 상세 정보¶
네트워크 전송 방향에 따라 클라이언트와 서버를 구분하여 표시합니다:
-
outgoing: 소스 주소(
src_ip)가 클라이언트, 대상 주소(dst_ip)가 서버입니다. -
incoming: 소스 주소(
src_ip)가 서버, 대상 주소(dst_ip)가 클라이언트입니다. -
unknown: 소스 주소(
src_ip)가 Local로, 대상 주소(dst_ip)가 Remote로 표시됩니다.
4계층-7계층 네트워크 연관 분석¶
패킷이 7계층 네트워크와 연관된 경우 HTTP 메서드(http_method)와 경로(http_path)를 표시합니다.
특정 데이터 패킷에 L7 네트워크 로그 데이터가 포함된 경우, 클릭하여 새 페이지에서 7계층 네트워크의 상세 로그를 확인할 수 있습니다.
오른쪽 상단의 검색창에서 seq 값을 기준으로 데이터 패킷을 검색하여 빠르게 위치를 찾을 수 있습니다.
7계층 BPF 네트워크 로그¶
모든 네트워크 흐름의 목록을 표시하고 각 네트워크 흐름의 상세 정보를 확인할 수 있습니다. 로그 탐색기에서 source:bpf_net_l7_log 데이터를 필터링하여 상세 페이지로 이동합니다:
네트워크 요청 토폴로지¶
네트워크 요청 경로, 물리 호스트와 가상 호스트 간의 요청 과정 및 소요 시간을 표시합니다. Guance는 노드 간의 흐름을 표시하여 네트워크 통신의 복잡성을 이해하는 데 도움을 줍니다.
- 가상 네트워크 카드:
pod_name,nic_name,dst_port,src_port,k8s_namespace,k8s_container_name,host등 관련 정보를 표시합니다. - 물리 네트워크 카드:
host,nic_name,dst_port,src_port,l4_proto,l7_proto등 관련 정보를 표시합니다.
참고
외부에 알 수 없는 네트워크가 있는 경우 N/A로 표시됩니다.
네트워크 카드에 대해 다음 작업을 수행할 수 있습니다:
-
네트워크 카드 노드의 포트에 마우스를 올리면
ip:port가 표시됩니다. -
네트워크 데이터 상세 정보를 확인해야 하는 경우, 네트워크 카드 노드에 마우스를 올리고 오른쪽 상단의 버튼을 클릭하면 해당 페이지로 이동합니다.
연관 네트워크 로그¶
Guance는 단일 연결 요청, 네트워크 카드 간 요청, 전송 계층 요청의 세 가지 차원에서 관련 로그 데이터를 표시합니다.
-
단일 연결 요청: 클라이언트와 서버 간에 단일 네트워크 연결을 통해 이루어지는 요청 및 응답입니다.
-
네트워크 카드 간 요청: 서로 다른 네트워크 카드를 통해 이루어지는 요청입니다. 예를 들어, 가상화 환경에서 요청이 가상 머신의 가상 네트워크 카드에서 시작되어 호스트의 물리 네트워크 카드를 통해 다른 가상 머신 또는 외부 서버로 전송될 수 있습니다.
-
전송 계층 요청: TCP 또는 UDP 프로토콜과 같은 전송 계층 네트워크 로그에서의 요청을 의미합니다.
오른쪽의 을 클릭하면 네트워크 로그 표시 열을 수정할 수 있습니다:
네트워크 문제 해결 예시¶
네트워크 문제가 발생하면 다음 단계에 따라 BPF 네트워크 장애를 진단할 수 있습니다:
- 문제 현상 확인: 연결 시간 초과, 패킷 손실 등 네트워크 문제의 증상을 기록합니다.
- 4계층 로그 확인:
bpf_net_l4_log를 통해 관련 네트워크 흐름의 기본 정보를 확인하고 전송 방향과 패킷 기본 정보를 확인합니다. - 7계층 로그 심층 분석: 문제가 애플리케이션 계층과 관련될 가능성이 있는 경우
bpf_net_l7_log를 통해 애플리케이션 계층의 상세 상호 작용을 확인합니다. - 네트워크 토폴로지 분석: 네트워크 요청 토폴로지 기능을 활용하여 가상 네트워크 카드와 물리 네트워크 카드 간의 호출 관계 및 소요 시간을 확인하고 네트워크 지연 또는 중단이 있는지 확인합니다.
- 연관 분석: 4계층-7계층 연관 분석을 통해 특정 애플리케이션 계층 프로토콜로 인해 문제가 발생했는지 확인합니다.
- 로그 연관: 문제가 있는 네트워크 흐름과 관련된 모든 로그를 확인하여 잠재적인 문제 단서를 찾습니다.
위 단계를 통해 BPF 네트워크 시각화를 효과적으로 활용하여 네트워크 문제를 진단 및 분석하고 신속하게 문제를 파악하여 해결할 수 있습니다.






