L4 로드밸런서의 DSR과 PIP 이해하기

2025. 11. 4. 11:35·Network
728x90

글의 목적

DSR과 PIP의 개념을 이해하는 것이 중요한 것 같습니다. 이 문제에 대해서 한번 접해보거나 이런게 있구나 정도만 알아도

많은 시간을 소모하지 않아도 될 것 같습니다. 이로 인해서 L4 로드밸런서를 사용해 VIP를 구성하는 경우 이 메커니즘에 대해서 반드시 알고 있는게 좋습니다.

보통 에러 증상은 불특정패턴으로 TIMEOUT 이 발생하며 서비스가 안되었다가 이런 패턴 형식으로 문제가 발생하게 됩니다.

PIP란 무엇인가?

PIP(Proxy IP)는 L4 로드밸런서가 NAT(Network Address Translation) 수행 시 사용하는 자신의 사설 IP 주소를 의미합니다. 이는 클라이언트와 서버 간의 통신에서 L4 로드밸런서가 중간에서 출발지 IP 주소를 자신의 IP로 변환하는 역할을 수행합니다.

DSR(Direct Server Return) 방식이란?

일반적인 L4 로드밸런싱 환경에서는 DSR(Direct Server Return) 방식을 사용할 수 있습니다. DSR은 클라이언트의 요청은 L4 로드밸런서를 거쳐 서버로 전달되지만, 서버의 응답은 L4 로드밸런서를 거치지 않고 직접 클라이언트에게 반환되는 방식입니다.

문제 발생 예시

MSA 기반의 서비스들로 운영중인 경우 같은 서브넷 안에서 여러 서버로 내부콜을 사용하게 되는 환경이 존재합니다.

그로 인해서 L4에서 이중화를 위해 VIP를 사용하게 되면 이와 같이 문제점이 발생합니다.

환경 구성:
10.100.11.10 - A서버
10.100.11.20 - B서버
10.100.11.100 - VIP (L4 로드밸런서)

# A서버가 VIP로 요청하는 경우
A서버(10.100.11.10) 
  → VIP(10.100.11.100) 요청
  → L4 로드밸런서가 A서버를 선택
  → A서버(10.100.11.10)로 전달
  → 자기 자신을 호출하는 문제 발생!

그럼 어떤 방법을 사용해야 할까? (DSR vs PIP)

중요한건 '같은 서브넷은 PIP, 외부클라이언트와 서버통신은 DSR' 이라고 보면 됩니다.

 

PIP를 사용해야 하는 경우

  • 같은 서브넷에서 서버가 VIP를 호출하는 경우 (필수)
  • 서버 간 통신이 빈번한 마이크로서비스 환경
  • 구성이 단순하고 설정이 쉬운 환경 선호
  • 내부 서비스 간 통신

DSR을 사용해야 하는 경우

  • 외부 클라이언트 → 서버 구조 (일반적인 웹 서비스)
  • 서로 다른 네트워크 구간 간의 통신
  • 대용량 응답 트래픽을 처리해야 하는 경우
  • L4 로드밸런서의 부하를 최소화해야 하는 경우

DSR 방식을 적용한 경우 (문제 발생)

1. A서버(10.100.11.10:47630) → VIP(10.100.11.100:8080) 요청
2. L4 로드밸런서가 A서버를 선택하고 패킷 전달
   - 목적지 IP: 10.100.11.100 → 10.100.11.10 변경
   - 출발지 IP: 10.100.11.10 유지 (DSR의 특징)
   
3. A서버가 받은 패킷
   출발지: 10.100.11.10:47630
   목적지: 10.100.11.10:8080
   
4. A서버의 네트워크 스택 판단
   "출발지도 나(10.100.11.10), 목적지도 나(10.100.11.10)?"
   "이건 비정상 패킷이야!" 
   → SYN 패킷 DROP ❌
   
5. 연결 실패, 계속 재전송 후 타임아웃 발생

 

PIP 방식을 적용한 경우 (문제 해결)

1. A서버(10.100.11.10:47630) → VIP(10.100.11.100:8080) 요청

2. L4 로드밸런서가 A서버를 선택하고 패킷 전달
   - 목적지 IP: 10.100.11.100 → 10.100.11.10 변경
   - 출발지 IP: 10.100.11.10 → 10.100.11.253(L4 PIP) 변경
   
3. A서버가 받은 패킷
   출발지: 10.100.11.253:47630 (L4 로드밸런서의 PIP)
   목적지: 10.100.11.10:8080
   
4. A서버의 네트워크 스택 판단
   "L4 로드밸런서(10.100.11.253)로부터 온 정상 요청이네!"
   → SYN-ACK 응답 생성 ✅
   
5. 연결 성공!

핵심 차이점

DSR 모드는 출발지 IP를 변경하지 않아서 자기 자신 호출 문제를 해결할 수 없지만, PIP 모드는 출발지 IP를 L4 로드밸런서의 IP로 변경하여 문제를 해결합니다.

출발지 IP 10.100.11.10 (원본 유지) 10.100.11.253 (L4 PIP로 변경)
A서버 인식 "나한테서 온 패킷?" ❌ "L4로부터 온 패킷" ✅
결과 패킷 DROP, 타임아웃 정상 연결

PIP를 사용해야 하는 경우

  • 같은 서브넷에서 서버가 VIP를 호출하는 경우 (필수)
  • 서버 간 통신이 빈번한 마이크로서비스 환경
  • 구성이 단순하고 설정이 쉬운 환경 선호
  • 내부 서비스 간 통신

DSR을 사용해야 하는 경우

  • 외부 클라이언트 → 서버 구조 (일반적인 웹 서비스)
  • 서로 다른 네트워크 구간 간의 통신
  • 대용량 응답 트래픽을 처리해야 하는 경우
  • L4 로드밸런서의 부하를 최소화해야 하는 경우

결론

같은 서브넷 내 서버 간 VIP 호출 시

  • DSR 방식은 응답이 어차피 L4를 거치지 않으므로 장점이 전혀 없습니다
  • 오히려 출발지 IP를 변경하지 않아 자기 자신 호출 문제만 발생합니다
  • 반드시 PIP 방식을 활성화하여 출발지 IP를 L4의 IP로 변환해야 합니다

외부 클라이언트 → 서버 통신 시

  • DSR 방식을 사용하면 대용량 응답 트래픽이 L4를 거치지 않아 성능상 이점이 있습니다
  • 이 경우에는 DSR의 본래 장점을 활용할 수 있습니다

 

실무에서는 환경과 트래픽 패턴에 따라 적절한 방식을 선택하고, 필요시 두 방식을 혼용하여 사용할 수 있습니다!

728x90

'Network' 카테고리의 다른 글

[NETWORK] OSI 7 Layer  (0) 2024.08.29
[Network] TCP Protocol 패킷 구조  (0) 2024.07.16
[Network] Alteon L4 Packet Capture 매뉴얼  (0) 2024.06.28
ALB, NLB의 차이와 사용 용도를 알아보자  (0) 2024.06.07
'Network' 카테고리의 다른 글
  • [NETWORK] OSI 7 Layer
  • [Network] TCP Protocol 패킷 구조
  • [Network] Alteon L4 Packet Capture 매뉴얼
  • ALB, NLB의 차이와 사용 용도를 알아보자
정주원
정주원
개인블로그
  • 정주원
    Joon.eng
    정주원
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • Linux (43)
      • Windows (0)
      • Network (5)
      • Database (0)
      • Cloud (23)
      • Docker (3)
      • Ansible (2)
      • Language (1)
      • Etc (5)
  • 블로그 메뉴

    • 링크

      • GITLAB(woni)
    • 공지사항

    • 인기 글

    • hELLO· Designed By정상우.v4.10.0
    정주원
    L4 로드밸런서의 DSR과 PIP 이해하기
    상단으로

    티스토리툴바