본문 바로가기
Infra

L4 SNAT 세션 풀(Session Pool)

by 당리 2025. 10. 26.

세션 풀(Session Pool) 개념

SNAT의 세션 풀 크기는 다음 공식으로 계산된다

"세션 풀 크기 = SNAT IP 개수 × 사용 가능한 포트 개수"

 

-한 IP가 가질 수 있는 최대 포트는 약 64K (65535개)

-하지만 OS 예약 포트, 커널 설정값(ip_local_port_range), L4 정책 등에 따라 실제 가용 포트는 더 적음

  • 예: 49152 ~ 65535라면 약 16K 개

 

 

세션 풀이 다 차면 어떤 일이 발생할까

  • 신규 연결 시도가 실패 (TCP SYN drop 등)
  • TIME_WAIT 세션이 계속 포트를 묶어두면 더 빨리 고갈

 

 

해결 방법

세션 풀 고갈은 대고객시스템 설계 단계에서 반드시 고려해야 하는 포인트입니다. 대표적인 해결책은 다음과 같음

 

  • SNAT IP 추가
    • 가장 확실한 방법. IP를 여러 개 할당해 풀 크기를 확장
  • 포트 범위 확대
    • Linux: /proc/sys/net/ipv4/ip_local_port_range 조정
    • 예: 1024 65535로 확장하여 약 64K 포트 사용
  • TIME_WAIT 관리
    • tcp_tw_reuse, tcp_fin_timeout 설정으로 재사용 및 해제 시간 단축
    • 단, 안정성을 해치지 않도록 서비스 특성을 고려해야 함
  • Persistent Connection(Keep-Alive)
    • 매 요청마다 새 연결을 만드는 대신 세션을 재활용

 

'Infra' 카테고리의 다른 글

tcp_fin_timeout란?  (0) 2025.11.02
SQL 튜닝 not exists  (0) 2025.10.26
SQL 튜닝 case when  (0) 2025.10.19
TCP 3-way Handshake  (0) 2025.10.19
L4 SNAT란  (0) 2025.10.12