[Network] L4 vs L7 Switch

치현·2024년 10월 26일

Network

목록 보기
1/1
post-thumbnail

L4 스위치, L7 스위치 도대체 뭐 하는 녀석들인데!?
지금부터 어떤 역할을 하는지 낱낱히 파해쳐 보겠습니다.

스위치란?

네트워크를 연결하는 일을 하는 목적을 가진 기기입니다.
연결된 모든 기기로부터 패킷을 수신하고 적절히 처리해 다른 기기로 보내는 역할을 합니다. 즉, 네트워크 상에 연결된 두 디바이스가 서로 통신할 수 있도록 도와주는 장비입니다.

L4 Switch

OSI 7계층을 아시나요?
스위치는 계층별로 패킷에서 알아낼 수 있는 정보가 다르고, 이러한 차이로 다른 역할을 수행하게 되는데요,
그 중에서도 IP와 Port 정보만 알 수 있는 L4 Switch, 대부분의 정보를 알 수 있는 L7 Switch가 가장 많이 쓰인다고 합니다.
먼저, L4 Switch에 대해 알아보죠.

L4 Switch는 OSI 4계층에 위치해 IP와 Port 정보를 이용합니다.
IP와 Port 정보만으로 무엇을 할 수 있을까요?
이 정보를 가지고 어디에 전달할지 결정하는 역할을 해요. Port를 구분할 수 있어 프로토콜(HTTP, FTP) 마다 다른 서버로 보내는 것이 가능하고, 실제 IP들을 하나의 가상 IP (Virtual IP)로 묶어서 처리할 수 있습니다.

잠깐! Virtual IP가 뭔데?
Virtual IP란 공유된 가상 IP로 스위치와 연결된 서버가 모두 가지고, VIP의 임시 주인을 정해 요청을 처리하도록 분산할 수 있도록 합니다.
내부의 VRRP라는 프로토콜로 임시 주인을 바꿔가며 분산처리를 한다고 하는데요, 사용자는 스위치가 가지고 있는 VIP 주소만 알면 되기 때문에 유용한 기능이 아닐 수 없네요.
자세한 내용은 https://run-it.tistory.com/44 에 잘 정리가 되어있으니 참고하시면 좋을 것 같아요!

이러한 기능을 로드밸런싱이라고 합니다.
왜 L4 스위치의 로드밸런싱 기능이 필요할까요?

만약 서버가 계속 추가된다면, 사용자는 서버에 각각 할당된 IP를 전부 알고 있어야합니다. 그리고 특정 서버로만 트래픽이 몰려들 수 있어요.
이럴 때 앞단에 L4 스위치를 설치해 로드밸런싱 기능을 이용하면 문제를 해결할 수 있습니다.

추가로 패킷의 송수신을 모니터링하고 트래픽 패턴을 분석해 QoS(Quality Of Service)를 적용함으로써 트래픽을 제어할 수 있습니다.

L7 Switch

L7 Switch는 OSI 7계층에 위치해 TCP/UDP 패킷의 정보 뿐만아니라 페이로드(URL, 캐시, 쿠키)까지 분석해 요청을 분산해요.
당연하게도 L4 Switch에서 제공된 분산 처리 기능은 모두 포함하고 있습니다.

예를 들어서 다음과 같은 처리가 가능합니다.

  1. www.naver.com/blogwww.naver.com/cafe 를 다른 서버가 처리하도록 설정 가능
  2. URI, 쿠키, 바이러스 패턴 등을 분석해 특정 트래픽을 받지 않도록 필터링 가능
  3. 패킷의 페이로드를 분석해 DDoS와 같은 공격 완화 가능

그럼 L4를 왜 쓰는데?

무엇보다도 L7 Switch는 복잡한 패킷을 분석하고 많은 기능을 제공하기 때문에 L4 Switch 보다 비싸요 😂
그리고 단순히 IP나 Port 정보만을 이용해도 부하 분산이 충분히 가능하다면 그 이상 패킷을 분석하는 L7 Switch는 리소스를 낭비하는 것이라고 생각합니다.

결론

HTTP 요청 등 L7 계층의 정보가 필요한 경우 L7 Switch를, IP와 Port 정보만으로 충분하다면 L4 Switch를 이용하자.

참고자료

https://myminju.tistory.com/108![](https://velog.velcdn.com/images/chyun/post/25069a54-0f00-4b09-b9ea-1dde88320c5e/image.png)

https://run-it.tistory.com/44
https://code-lab1.tistory.com/321
https://www.juniper.net/kr/ko/research-topics/what-is-a-network-switch.html

profile
Backend Engineer

0개의 댓글