1. 4계층 장비의 특징
- 4계층 장비는 TCP와 같은 4계층 헤더에 있는 정보를 이해하고 이 정보들을 기반으로 동작
- 4계층 이상에서 동작하는 로드 밸런서, 방화벽과 같은 장비를 '세션 장비'라고 부르기도 함
- 세션 장비의 고려해야 할 특징
- 세션 테이블
- Sysmmetric(대칭) 경로 요구
- 정보 변경(로드 밸런서의 경우)
2. 로드 밸런서
✍ 로드 밸런서 : 서버나 장비의 부하를 분산하기 위해 사용하는 장비, 4계층 이상에서 동작하며 IP 주소나 4계층 정보, 애플리케이션 정보를 확인 및 수정하는 기능이 있음
- 로드 밸런서는 동작하는 계층에 따라 보통 4계층과 7계층으로 나뉨
- L4 로드 밸런싱 : TCP, UDP 정보를 기반으로 로드 밸런싱 수행, 4계층에 대한 정보로만 분산 처리
- L7 로드 밸런싱 : HTTP, FTP, SMTP와 같은 애플리케이션 프로토콜 정보를 기반으로 로드 밸런싱 수행
2-1. L4 스위치
- 4계층에서 동작하면서 로드 밸런서 기능이 있는 스위치
- 부하 분산, 성능 최적화, 리다이렉션 기능 제공

L4 스위치를 사용한 부하 분산
- L4 스위치가 동작하려면 가상 서버(Virtual Server), 가상 IP(Virtual IP), 리얼 서버(Real Server)와 리얼 IP(Real IP)를 설정해야 함
- 가상 서버 : 사용자가 바라보는 실제 서비스
- 가상 IP : 사용자가 접근해야 하는 서비스 IP 주소
- 리얼 서버 : 실제 서비스를 수행하는 서버
- 리얼 IP : 실제 서버의 IP
- L4 스위치는 가상 IP를 리얼 IP로 변경해주는 역할을 수행
2-2. ADC
✍ ADC(Application Delivery Controller) : 애플리케이션 계층에서 동작하는 로드 밸런서
- 다양한 부하 분산, 정보 수정, 정보 필터링이 가능
- 대부분의 ADC는 4계층에서 애플리케이션 계층까지 로드 밸런싱 기능 제공, 페일오버(Failover, 장애극복 기능), 리다이렉션 기능 함께 수행
- 캐싱, 압축, 콘텐츠 변환 및 재작성, 인코딩 변환 등이 가능, 애플리케이션 프로토콜 최적화 기능 제공
2-3. L4 스위치 vs ADC
L4 스위치

L4 스위치의 서버 성능 향상 기법
- TCP, UDP 정보를 기반으로 부하 분산
- TCP 계층에서의 최적화와 보안 기능 제공
- TCP 세션 재사용과 같이 보안과 성능을 높여주는 기능 제공
ADC

ADC의 성능 최적화: 캐싱 기능
- 성능 최적화를 위해 서버에서 수행하는 작업 중 부하가 많이 걸리는 작업을 별도로 수행

ADC의 성능 최적화: 압축 기능
- 압축 기능으로 웹 서버의 부하를 줄임, 하드웨어 가속이나 소프트웨어 최적화를 통해 부하가 걸리는 작업 최적화

ADC의 성능 최적화: SSL 오프로딩(SSL Offloading)
- SSL의 엔드 포인트로 동작해 클라이언트에서 ADC까지의 구간을 SSL로 처리해주고 ADC와 웹 서버 사이를 일반 HTTP를 이용해 통신
✍ 스케일 업 : 시스템을 가장 쉽게 확장해 서비스 용량을 키우는 방법, 기존 시스템에 CPU, 메모리, 디스크와 같은 내부 컴포넌트 용량을 키우거나 새로 더 큰 용량의 시스템을 구매해 서비스를 옮기는 방법
✍ 스케일 아웃 : 같은 용량의 시스템을 여러 대 배치

시스템 확장 방법: 스케일 업, 스케일 아웃
✍ 스케일 다운 : 기존 시스템보다 작은 용량의 시스템으로 서비스를 옮기는 방법
✍ 스케일 인 : 여러 개의 서비스를 합쳐 하나의 시스템에서 운영하는 방법

시스템 축소 방법: 스케일 다운, 스케일 인
3. 방화벽
✍ 방화벽 : 네트워크 중간에 위치해 해당 장비를 통과하는 트래픽을 사전에 주어진 정책 조건에 맞추어 허용하거나 차단하는 장비
- 네트워크 3, 4계층에서 동작하고 세션을 인지, 관리하는 SPI(Stateful Packet Inspection) 엔진을 기반으로 동작하는 장비

세션 테이블이 있는 방화벽

방화벽은 세션 테이블을 이용해 패킷의 인과 관계를 파악한다.
- 패킷이 외부로 나갈 때 세션 정보를 저장하고 패킷이 들어오거나 나갈 때 저장했던 세션 정보를 먼저 참조해 들어오는 패킷이 외부에서 처음 시작된 건지, 내부 사용자가 외부로 요청한 응답인지 가려냄
4. 4계층 장비를 통과할 때의 유의할 점(세션 관리)
4-1. 세션 테이블 유지, 세션 정보 동기화
- 종단 장비에서 통신을 시작하면 중간에 있는 세션 장비는 해당 세션 상태를 테이블에 기록하는데 세션 테이블은 메모리에 저장되므로 메모리 사용률을 적절히 유지하기 위해 일정 시간만 세션 정보를 저장

세션 장비의 세션 만료 시간이 애플리케이션 세션 만료 시간보다 짧을 경우
위 사진 동작순서
1. 3방향 핸드셰이크를 통해 정상적으로 세션 설정, ① 방화벽에서 세션 설정 과정을 확인하고 세션 테이블 기록
2. ②, ③ 세션 테이블을 참조해 방화벽에서 세션 통과
3. 일정 시간동안 통신 없음
4. ④ 세션 타임으로 세션 테이블 만료
5. 세션 만료 후 애플리케이션 통신 시작
6. ⑤ 세션이 만료되어 방화벽에서 패킷 드롭
세션 장비 운영자 입장
1. 세션 만료 시간 증가
2. 세션 시간을 둔 채로 중간 패킷을 수용할 수 있도록 방화벽 설정(세션 장비 중 방화벽에 해당)
3. 세션 장비에서 세션 타임아웃 시 양 단말에 세션 종료 통보
개발자 입장
1. 애플리케이션에서 주기적인 패킷 발생 기능 추가
4-2. 비대칭 경로 문제
✍ 대칭 경로(Symmetric Path) : 인바운드 패킷과 아웃바운드 패킷이 같은 장비를 통과하는 것
✍ 비대칭 경로(Asymmetric Path) : 인바운드 패킷과 아웃바운드 패킷이 다른 장비를 통과하는 것

대칭 경로. 인바운드, 아웃바운드 패킷이 한 장비를 통과해 통신에 문제가 없다.

비대칭 경로. 인바운드 패킷과 아웃바운드 패킷이 한 장비를 통과하지 않아 세션 정보가 없어 패킷이 드롭된다.
- 비대칭 경로를 방화벽에서 처리할 수 있는 방법
- 세션 테이블을 동기화(응답시간이 비교적 긴 인터넷 게이트웨이로 방화벽이 사용될 때 유용하게 사용)
- 세션 장비에서 다양한 방법으로 이를 보정하는 것(MAC 주소를 변경하는 MAC 리라이팅이나 기존 패킷에 MAC 주소를 한 번 더 인캡슐레이션하는 터널링 기법으로 경로 보정)
4-3. 하나의 통신에 두 개 이상의 세션이 사용될 때의 고려사항
✍ 데이터 프로토콜 : 데이터를 실어 나름
✍ 컨트롤 프로토콜 : 데이터가 잘 전송되도록 세션을 제어
- 대부분 컨트롤 프로토콜 기능과 데이터 프로토콜 기능을 하나의 프로토콜에서 헤더나 별도 메시지로 해결하지만 특별한 목적이 있거나 오래된 프로토콜은 두 개의 프로토콜이 분리된 경우가 있음 (ex. FTP)

컨트롤 프로토콜과 데이터 프로토콜이 다른 경우의 고려사항
- FTP의 기본적인 구동 방식은 Active 모드(컨트롤 프로토콜과 데이터 프로토콜이 분리되어 있고 방향도 반대로 동작)
- Passive 모드는 클라이언트에서 서버쪽으로 데이터를 요청해 다운받도록 동작
- Passive 모드는 클라이언트 쪽에 방화벽이나 세션 장비가 있을 경우, 특별한 작업 없이 동작 가능하지만 서버 쪽에 방화벽이 있으면 데이터 다운로드를 위한 추가 포트를 열어주어야 함