F5 BIG-IP TCP 연결 흐름
개요
F5 BIG-IP의 연결
가상 서버
LTM에 정의된 가상 서버가 클라이언트와 서버(Pool의 Node)에 갹각 연결을 가지고 있는 케이스.
> Client \<--연결1--> LTM \<--연결2--> Server
Standard Layer 4 Virtual Server
ltm이 클라이언트, 서버와 각각 연결을 완료한 후 통신
- 클라이언트와 LTM의 3way-handshake connection을 완료
- LTM와 노드의 3way-handshake로 커낵션 완료
- 데이터 통신
Standard Layer 7 Virtual Server
ltm이 클라이언트와 연결 및 http 패킷을 수신한 후, 서버와 연결 및 http 통신 진행
- 클라이언트와 LTM의 3way-handshake connection을 완료
- 클라이언트가 http(ex. get)을 전송
- LTM와 노드의 3way-handshake로 커낵션 완료
- LTM이 서버로 http(ex. get)을 전송
Performance Layer 4 Virtual Server
연결을 먼저 처리하고, 데이터 송수신
- client->ltm : syn
- ltm->server : syn
- server->ltm : syn,ack
- ltm->client : syn,ack
- client->ltm : ack \<-- client-ltm 연결 완료
- ltm->server : ack \<-- ltm-server 연결 완료
- client->ltm : data
- ltm->server : data
Performance HTTP(Layer 7) Virtual Server
pool 내부의 idle node에 미리 연결해두고, 클라이언트 요청이 들어오면 연결 및 데이터 전송
- ltm->server : syn
- server->ltm : syn,ack
- ltm->server : ack \<-- idle한 서버와 ltm 연결
- client->ltm : syn \<-- client 요청
- ltm->client : syn,ack
- client->ltm : ack \<-- client-ltm 연결 완료
- client->ltm : data
- ltm->server : data
클라이언트 요청 전 1-3과정을 미리 수행해 둬서 퍼포먼스 향상
idle server가 없을 경우
클라이언트 요청이 들어오면 클라이언트-ltm, ltm-서버 연결을 하고, 데이터를 보냄.
standard와의 차이 : standard의 경우 클라이언트-ltm, ltm-서버간 연결&데이터전송이 순서대로 이루어지지만, performance의 경우 연결 단계와 데이터 단계가 별도로 구성
- client->ltm : syn
- ltm->client : syn,ack
- client->ltm : ack \<-- client-ltm 연결 완료
- ltm->server : syn
- server->ltm : syn,ack
- ltm->server : ack \<-- ltm-server 연결 완료
- client->ltm : data
- ltm->server : data
Forwarding Type
- 중간에 ltm이 별도 연결을 쥐지 않고 패킷을 바로 포워딩
- x-forwarded-for를 쓰지 않고 클라이언트 아이피를 바로 땡겨쓸 수 있다
- seq_num, ack_num 등 동일
Forwarding Layer 2 Virtual Server
pool없이 라우팅 룰에 따라 던짐 (source/destination 설정에 따라 싱글IP뿐만 아니라 CIDR format 가능) 개별 풀/노드를 구성을 하지 않고 간단한 라우팅 테이블에 따라 패킷을 포워딩하기 위한 용도로 사용. 프록시 등. 이를 위해 라우팅(virtual server의 IP로 VLAN 설정) 필요.
Forwarding IP Virtual Server
pool없이 라우팅 룰에 따라 destination IP로 던짐
Reject Virtual Server
Virtual Server로 Syn이 들어오면 바로 RST를 날려서 끊어버림.