nf_conntrack full로 인한 Packet Drop 대응

Image for post
Image for post

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

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

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

‘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’ 꼭 한 번 체크해보시면 좋을 것 같습니다.

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

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

Image for post
Image for post

NAVER CLOUD PLATFORM

네이버 클라우드 플랫폼 기술 블로그 입니다.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store