프래그먼트 처리
프래그먼트 처리 (Fragment Handling)
기본적으로 Cilium의 eBPF 데이터패스는 IP 프래그먼트 추적을 수행해 UDP처럼 세그멘테이션을 지원하지 않는 프로토콜도 큰 메시지를 네트워크를 통해 투명하게 전송할 수 있게 해 줍니다. 이 글에서는 관련 옵션과 확인할 수 있는 메트릭을 알아볼게요.
본문
기본적으로 Cilium은 세그멘테이션을 지원하지 않는 프로토콜(예: UDP)이 큰 메시지를 네트워크를 통해 투명하게 전송할 수 있도록 eBPF 데이터패스가 IP 프래그먼트 추적을 수행하도록 구성합니다. 이 기능은 다음 옵션으로 구성할 수 있어요:
--enable-ipv4-fragment-tracking: IPv4 프래그먼트 추적을 활성화 또는 비활성화합니다. 기본적으로 활성화되어 있어요.--enable-ipv6-fragment-tracking: IPv6 프래그먼트 추적을 활성화 또는 비활성화합니다. 기본적으로 활성화되어 있어요.--bpf-fragments-map-max: IP 프래그먼트화를 사용하는 동시 활성 연결의 최대 수를 제어합니다. 기본값은 eBPF Maps를 참고하세요.
프래그먼트화가 발생했는지 확인하려면 다음 메트릭의 값을 확인하세요:
cilium_bpf_map_pressure{map_name="cilium_ipv4_frag_datagrams"}cilium_bpf_map_pressure{map_name="cilium_ipv6_frag_datagrams"}
값이 0이 아니라면 프래그먼트화된 패킷이 처리됐다는 뜻이에요.
또한 다음 메트릭을 확인해 Cilium 데이터패스가 얼마나 많은 MTU 오류 메시지(즉 ICMP fragmentation_needed 또는 ICMPv6 packet_too_big )를 처리했는지 알 수 있어요:
mtu_error_message_total
이 패킷들은 경로 MTU 디스커버리의 기초이며, 네트워크 경로를 따라 패킷이 네트워크의 최대 MTU 크기를 초과하고 있음을 나타냅니다.
Note
이것은 베타 기능입니다. 문제가 발생하면 피드백을 제공하고 GitHub 이슈를 올려주세요.