nf_conntrack full로 인한 Packet Drop 대응

NAVER CLOUD PLATFORM
NAVER CLOUD PLATFORM
4 min readSep 6, 2019

안녕하세요, 네이버 클라우드 플랫폼입니다.

네이버 서비스의 다양한 인프라를 운영하다 보면 예상치 못한 트래픽으로 여러 가지 이슈들이 발생하기 마련입니다.

오늘은 대규모 미디어 서비스시 발생할 수 있는

‘nf_conntrack full로 인한 Packet Drop’ 대응 방법을 공유합니다!

배경

서비스에 대규모 트래픽이 발생하여 L4로 묶여있는 특정 서버 그룹의 서버 1대에서 네트워크 순단이 발생, 특정 시스템에 장애를 유발할 수 있는 상황

이슈 원인

nf_conntrack:table full, dropping packet

​* conntrack이란?

- iptables의 상태추적 모듈로 NAT 테이블, FTP 등과 관련이 있는 모듈입니다.

- netfilter가 네트워크에서 발생하는 커넥션에 대해 해당 내용들을 기록하고 추적하기 위한 모듈입니다.

​nf_conntrack이 활성화되어있을 경우, 커넥션 상태에 대해서 일정 시간(nf_conntrack_tcp_timeout_established : default 432000초(5일))동안 기억하게 됩니다.

일반적으로는 활성화되지 않지만, iptables를 이용한 NAT 테이블 명령이나, iptables의 NAT 기능이 필요한 어플리케이션(ex: docker)이 실행될 경우 활성화됩니다.

nf_conntrack 모듈이 활성화된 상태에서 연결을 기록하는 table의 크기를(default: 65536) 초과할 경우, 그 이후 수신되는 packet들은 drop되게 됩니다.

서버들의 리소스 가용량이 충분하였음에도, 중계 시작 시점 즈음 사용자들의 요청이 몰리며 해당 모듈이 올라간 서버 1대에서 nf_conntrack의 기본 table의 크기를 초과하게 되어 packet이 드랍되었습니다.

확인 방법

  1. nf_conntrack module 확인

#lsmod | grep nf_conntrack

2. conntrack table 최대 크기 확인

#cat /proc/sys/net/nf_conntrack_max

3. nf_conntrack 현재 접속 카운트

#watch -d cat /proc/sys/net/netfilter/nf_conntrack_count

대응 방안

일반적으로 이를 해결하기 위한 방법으로는 conntrack의 table 최대 값을 수정하는 방법 또는 nf_conntrack(ip_conntrack) 모듈을 unload하는 방법이 있습니다.

1. conntrack table의 최대 값을 수정하는 방법

echo “원하는 최대치 값” > /proc/sys/net/nf_conntrack_max

또는

sysctl.conf의 하단에 net.nf_conntrack_max = 원하는 최대치 값

저장 후 sysctl -p로 적용

2. nf_conntrack 모듈 unload 방법

iptables stop 이후, iptables rule 중에 state 구문이 들어가는 rule을 삭제하고

rmmod nf_conntrack

위와 같은 방법을 통해 시스템 장애를 미리 감지하여 대응할 수 있었고, 해당 서비스를 큰 이슈 없이 평화롭게 운영할 수 있었습니다!

​이상입니다. 오늘은 ​대규모 미디어 서비스시 발생할 수 있는

‘nf_conntrack full로 인한 Packet Drop’ 대응 방법을 알아보았습니다.

예상치 못한 대규모 요청이 발생할 수 있는 서비스를 현재 운영 중이시라면,본 포스팅을 참고하셔서 ‘nf_conntrack’ 꼭 한 번 체크해보시면 좋을 것 같습니다.

​앞으로도 네이버 클라우드 플랫폼에 많은 관심 부탁드립니다.

다음에도 좋은 글로 찾아뵙겠습니다.​ 감사합니다!

--

--

NAVER CLOUD PLATFORM
NAVER CLOUD PLATFORM

We provide cloud-based information technology services for industry leaders from startups to enterprises.