Layer4 와 Layer7
L4 스위치는 단순히 Layer 4를 이용하여 로드밸런싱하는 것 뿐만 아니라 실제 사용자가 접근하는 프로토콜인 Layer 7까지 로드밸런싱해서 사용가능하다.
Layer 4만 제어해서 로드밸런싱을 하거나 Layer 4와 Layer 7 모두를 제어해서 로드밸런싱 하느냐에 따라 L4 스위치의 Virtual Server의 Type과 역할 그리고 Traffic Flow가 달라진다.
즉 L4 Type Virtual Server와 L7 Type Virtual Server로 나뉜다.
또한 L4 스위치는 다수의 L4 Virtual Server와 L7 Virtual Server를 가질 수가 있다.
그 전에 이것들을 이해하기 위해 L4와 L7에서의 L4 스위치 동작과 TCP의 3-way handshake에 대한 이해가 필요하다.
Application Layer (Layer 7)
사용자가 UI로 접하는 응용 프로그램과 관련된 계층으로 HTTP, FTP, DHCP, SMTP, DNS 등이 있다.
여기에 속한 프로토콜은 어떠한 방법으로든 사용자와 직접 접하게 된다.
(Date + HTTP Header)
Transport Layer (Layer 4)
송신자와 수신자의 논리적 연결을 담당하며, 신뢰성 있는 연결을 유지하는 것을 도와준다.
endpoint(사용자) 간의 연결을 생성하고, 데이터를 얼마나 보냈는지 또는 받았는지, 제대로 받았는지 등을 확인하며 TCP와 UDP가 대표적이다.
(Date + HTTP Header + TCP Header)
L4 스위치
80 이라는 숫자는 Port를 의미합니다.
OSI 7 Layer 중 Layer 4의 정보인 Port를 사용하기 때문이다.
하나의 서버에서 웹 서비스를 제공하여도 80,8080,888 Port 등 종류별로 다양한 웹 서비스를 제공한다.
만약에 Port를 모르는 상태로 IP 정보만을 가지고 접속한다면 어느 Port로 접속해야할지 모를 것이다.
그래서 L4 스위치에 외부에서 접속할 IP와 더불어 Port 까지 명시를 해주어야 합니다.
기본적으로 L4 스위치를 통신하는데 있어 IP(Layer 3) 와 Port(Layer 4)는 필요하다.
목적지에 도달하는 것 뿐만 아니라 송수신자의 논리적 연결을 생성하고 데이터 전송에 기여하기 때문이다. 또한 선택적으로 사용자와 서버가 사용하고자 하는 프로토콜인 Layer 7(HTTP, DNS, SMTP, FTP)에도 관여할 수 있다.
L4 스위치는 TCP 또는 UDP의 특성을 이용/제어해 송수신자의 논리적 연결을 생성하며, L4 스위치의 목적인 로드밸런싱을 실행한다. 이것을 "L4 로드밸런싱" 이라고 한다.
TCP / UDP를 이용해 논리적 연결을 생성하는 것을 뛰어넘어 사용자와 서버가 사용하는 Layer 7의 프로토콜에 간섭해 룰 기반으로 로드밸런싱을 실시하거나 프로토콜의 헤더에 필요한 정보를 넣을 수 있다.
이때에 Layer 4의 TCP/UDP 헤더뿐 아니라 Layer 7 프로토콜의 헤더를 제어한다. 이것을 "L7 로드밸런싱" 이라고 한다.
"L7 로드밸런싱" 은 Layer 4 뿐 아니라 Layer 7 모두 수반하는 기능이라고 생각하면 된다.
3-way handshake
TCP를 사용하는 송수신자는 데이터를 전송하기 전 먼저 서로 통신이 가능한 지 의사를 묻고 한 번에 얼마나 받을 수 있는지에 대한 정보를 확인한다. 신뢰성 있는 통신을 하기 위함이다.
사용자와 서버가 통신을 할때에 논리적 연결을 가지기 위해 TCP를 사용할 경우에 3-way handshake를 실시하게 된다.
사용자와 서버 사이에 중간 L4 스위치가 존재한다면 L4 스위치가 중간에서 3-way handshake에 필요한 패킷(SYN, SYN/ACK, ACK)을 대신 서버/사용자에게 전달해주거나 L4 스위치가 송수신자가 되어서 3-way handshake에 필요한 패킷(SYN, SYN/ACK, ACK)을 주고 받는다.
이것은 Virtual Server의 Type에 따라 달라지게 된다.
해당 이미지는 3-way handshake 진행할때에 L4 스위치가 어떠한 동작을 하는지에 대해 보여준다.
이미지에서 L4 스위치가 3-way handshake 관련 패킷인 SYN, SYN/ACK, ACK 패킷을 Forwarding 하고 있다.
L4 Virtual Server의 Traffic Flow
F5 Networks에서는 L4 로드밸런싱을 담당하는 L4 Virtual Server를 Performance L4 Type 이라고 부른다.
Alcatel 에서는 L4 Application Delivery Controller로 알고 있음.
말 그대로 L4에서의 성능을 극대화한 Virtual Server Type이라는 뜻이다. Performance Type에서 L4 스위치의 역할은 트래픽 중개 및 제어보단 전달(Forwarding)에 초점을 두고 있습니다. 그렇기 때문에 Layer 4 프로토콜인 TCP / UDP를 제어하면서 사용자가 전달한 요청 그대로 Pool Member에게 전달합니다.
3-way handshake 또한 예외는 아닙니다. 아래에 이미지를 보면 3-way handshake의 패킷 조차도 L4 스위치가 Pool Member에게 전달합니다. 즉 3-way handshake를 신행하는 주체가 사용자와 서비이고, L4 스위치는 중간에서 전달하는 역할만을 하게 됩니다. 아래의 이미지에서 사용자(혹 서버)와 L4 스위치가 3-way handshake가 아닌 사용자와 서버가 3-way handshake를 진행하며 L4 스위치는 단순 전달(로드밸런싱)의 역할만 하는 것을 볼 수 있습니다.
3-way handskake 이후에 사용자가 데이터를 전달하면 그대로 Pool Member에게 전달한다. L4 스위치가 로드밸런싱과 연결 생성에 집중하기에 상대적으로 부하가 감소해 성능을 극대화활 수 있습니다. 상위 프로토콜인 Layer 7에 대한 간섭을 원하지 않고 처리 성능을 더 효율적으로 요청을 처리하고자 할때에 L4 Virtual Server을 사용합니다.
L7 Virtual Server Traffic Flow
F5 Networks에서 L7 로드밸런싱을 담당하는 L7 Virtual Server를 Standard Type이라고 칭합니다.
Layer 4의 TCP/UDP 뿐 아니라 Layer 7의 HTTP, FTP, SMTP, DNS 등의 프로토콜 헤더를 제어하거나 필요한 정보를 넣을 수가 있다.
L4 스위치가 프로토콜의 헤더에 직접 개입하기 때문에 사용자/서버와 L4 스위치가 3-way handshake를 실시하고 패킷도 직접 받아서 처리후에 넘거준다.
말하면 전달보다는 중개자로써의 역할의 비중이 큰것이다. 이것을 Proxy라고 합니다.
사용자와 L4 스위치가 3-way handshake를 실시한 후 HTTP 요청을 받습니다.
그리고 부하분산할 Pool Member를 선택하고, L4 스위치와 서버가 3-way handshake를 실시하여 전달받은 요청을 Pool Member에 전달하는 것을 볼 수 있습니다.
이처럼 L7 Virtual Server Type인 Standard TYPE을 사용하게 되면 HTTP 헤더를 제어할 수있게 되어서 다양한 로드밸런싱 또는 전달이 가능하게 됩니다.
<참고자료>
'Network > L4 Switch' 카테고리의 다른 글
[Alteon] Alteon L4 Switch 테스트 하기 - 1 (0) | 2025.02.12 |
---|---|
[L4] L4 스위치 학습하기 - 3 [NAT] (0) | 2025.02.07 |
[L4] L4 스위치 학습하기 - 1 (0) | 2025.02.04 |
[Alteon] 알테온(Alteon) L4 기본 command (0) | 2024.12.13 |