Middlebox
미들박스는 source host로부터 목적지 호스트로 가는 데이터 경로상의 IP 라우터를 제외한 모든 다른 네트워킹 장치를 일컫는다.
IP 라우터는 normal (인터넷 설계 초기부터 매우 중요한 설계 요소) 인데, 인터넷 설계 초기에는 고려하지 않았던, 새롭게 등장한 장치들을 모두 미들박스라고 한다.
대표적으로 NAT 가 있다.
만약 IP주소가 넉넉해서 모든 IP주소를 항상 원하는 단체, 기관, 개인에게 공급할 수 있었다면 NAT는 등장하지 않았겠지만, IP주소가 부족한 문제가 발생해서 NAT가 source - destination 경로 사이에서 IP라우터가 하는 일 이외의 다른 일을 하기위해 등장했다. 이런 장치를 미들박스라고 한다.
Middlebox 종류
1. NAT
2. Firewall, IDS
보안에서 필수적인 미들박스, IDS는 침입 탐지 시스템을 말하며, 네트워크 내부의 CCTV 같은 장치이다. 네트워킹 디바이스가 네트워크 내부의 트래픽 중에 공격과 유사하거나, 평소에 발생하지 않는 관리자의 주의가 필요한 액션이 발생하면 이를 찾아낸다.
3. Load Balancer
서버로 오는 요청을 분산시켜서 서버의 부하를 분산시키는 장치이다.
어떤 서버가 인기가 많다면 그 서버에 트래픽이 몰릴텐데, 하나의 단독 서버가 이 트래픽을 모두 서비스할 수 없기 때문에 해당 서버 앞단에 로드 밸런서라는 별도의 장치를 두어, 서버로 들어오는 요청들을 로드 밸런스가 1차적으로 받고, 로드밸런서 아랫단에 있는 여러 서버에게 적절히 요청을 분산해서 할당하는 역할을 한다.
4. Application-Specific (대표적으로 CDN)
5. Cache (웹 캐시)
웹 트래픽이 서버로 가기 전에 먼저 캐시를 확인하고나서 서버로 가기 때문에, 소스와 데스티네이션 사이에 라우터 이외 역할을 하는 것과 같다. 따라서 캐시도 미들박스에 속한다.
미들박스는 과거에 proprietary hardware solution 이었던 경우가 많다.
(proprietary = 기업이 기술을 공개하지 않고 상품만 만들어서 파는 것)
그런데 이게 점점 오픈된 형태로 white box hardware implementation이 나타났다.
그래서 Open API가 제공되면서 이 오픈 API를 따르도록 구현한 여러 회사에서 상용화된 미들 박스를 제조하기 시작했다.
(예를 들면 공유기 NAT를 만드는 회사가 여러가지 있다. 여러 회사들이 이런 제품들을 만들면서 programmable 한 action이 가능해졌다.)
그래서 과거에는 하드웨어적인 부분에 기반을 두고있었다면, 요즘에는 하드웨어보다 소프트웨어를 통해 차별화를 추구하는 방향으로 바뀌게 되었다. (물론 하드웨어도 중요하긴 하지만)
SDN ( Solfware Defined Network ) 은 centralized controller를 이용해서 네트워크를 조성할 때 프로그래머빌리티를 도입해보자는 아이디어다.
OpenFlow 의 컨트롤러가 SDN 개념을 구현한 것이라고 볼 수 있다.
SDN과 조금 차별화 된 것이 NFV (Network Function Virtualization) 이라는 것이 있다.
이 개념은 네트워크 장치를 가상화하는 의도이다.
물론 SDN도 가상화 개념이 들어가기는 하지만, SDN은 그 범위가 네트워크 구성 자체를 프로그램으로 바꿔보자는 더 넓은 아이디이고, NFV는 네트워크 장치를 가상화시키자는 좁은 의미의 아이디어다.
둘다 개념은 프로그래머빌리티를 도입하는 것이다.
IP Hourglass
과거의 네트워크 구성을 보면 아래와 같은 모래시계 구조를 지니고 있었다.
3계층에는 IP 라는 프로토콜 하나만 존재했고, 그 이외에는 여러 프로토콜이 존재했다.
그래서 IP라는 프로토콜이 인터넷에서 가장 핵심적인 역할을 수행한다. (제일 단순화되어 있기 때문이다.)
IP만 지원하면 어떤 데이터링크 계층 기술도 인터넷에 붙어 연결시킬 수 있다.
반대로 4계층도 TCP, UDP 이외의 프로토콜을 개발한다고 했을 때 IP에 대한 지원만 한다면 그 프로토콜로도 인터넷에 충분히 연결될 수 있다.
그래서 IP는 필수 프로토콜이고, 나머지는 모두 옵션에 해당한다고도 볼 수 있다.
그래서 가운데 IP가 있는 부분이 인터넷에서 제일 잘록한 부분이고, 제일 핵심인 IP만 구현하면 디바이스들이 인터넷에 연결되거나 새로운 어플리케이션들이 인터넷에서 돌아가는데 문제가 없게끔 설계가 되어있다.
따라서 IP는 반드시 구현되어야 하는 기술이다.
반면 다른 프로토콜들은 내가 다른 프로토콜을 만들어서 쓰겠다고 한다면 충분히 대체가 가능하다.
이론상으로는 HTTP 이외에 독자적인 프로토콜로도 어플리케이션을 만들어서 인터넷에서 충분히 돌릴 수 있다.
그런데 이렇게 중요했던 3계층이 미들박스로 인해 점점 뚱뚱해지고 있다.
NAT, NFV 와 같은 기술들이 등장했기 때문이다.
원칙주의자들은 굉장히 마음에 안들어하고 있다.
인터넷이 지금처럼 성공할 수 있었던 이유는 단순한 구조 때문이다.
네트워크의 핵심 계층인 IP를 단순화 시키고 나머지 계층에 굉장한 자유를 부여하자.
intelligence는 end system에서 구현되도록 하자.
라고 정한 것이 인터넷의 성공 요인중 하나였는데, 이 원리를 깨는 장치들이 등장한 것이다.
그래서 초창기 인터넷의 설계 원리를 보면, 인터넷의 핵심 목표는 연결성이다.
군사적인 공격을 받아서 특정 지점에 물리적 연결이 끊어지더라도 우회 경로를 따라서 목적지까지 데이터를 전달할 수 있도록 네트워크를 만들자는 것이 목표였다.
그래서 굉장히 단순한 형태의 연결성을 구상하고, 중요한 내용은 end system (엣지) 에서 구현하도록 했다.
연결성이 중요하기 때문에 연결성을 최대한 단순화한 것이다.
그래서 현재 인터넷도 이 원칙에 맞게 설계되어 있다.
rdt 와 같은 경우도 TCP에서 구현되어 있으며 TCP는 4계층이고, 엣지에만 존재하는 계층이므로 end system 이다. (네트워크 라우터는 4계층이 필요하지 않기 때문에)
이런 기능들은 end system 에서 담당하는 것이 맞다고 생각해서 4계층에서 설계한 것이다.
(굳이 하겠다면 3계층에서 충분히 할 수 있다. 예를들면 라우터가 어떤 데이터를 받아서 전달하는데, 라우터가 ACK를 받는 것을 요청할 수 있다. 이때 ACK를 안받으면 라우터가 직접 다시 재전송을 하도록 설계할 수도 있었다. 이렇게 하면 라우터에 부담이 생기는 문제가 있다. 그래도 문제가 발생했을 때 신속하게 문제가 발생한 지점에서 해결이 가능한 것은 장점이다.)
위 그림에서 아래 구상도가 hop by hop 으로 rdt를 구현한 것이다.
과거에는 end system 에만 인텔리전스가 있는 것이 완칙이었지만, 그건 이미 깨졌고, 중간에도 있을 수 있다는 것을 받아들여야한다. 어쩔 수 없다.
그래서 end-to-end argument는 여러 과정에서 구현될 수 있는 (rdt 같은 것) 기능들은 여러 단계에서 구현될 수 있지만 end system에서 구현되는 것이 맞다는 원칙이다. 어플리케이션이 최종 판단을 하는 것이 맞고, 라우터는 단순한 패킷 전달 장치로 보는 것이다.
과거 유선 전화 시절에는 중앙에 전화국을 두고 교환기 시스템을 두어 가운데에 인텔리전스가 있었다.
인터넷이 등장한 초기에는 각각의 디바이스에 인텔리전스가 있었다.
그런데 인터넷이 등장한지 시간이 좀 지나자, 여러 장치들에 인텔리전스를 부여해서 내부적으로도 인텔리전스를 갖게 되었다. (NAT, CDN 같은 것)
따라서 요즘은 인텔리전스가 정확히 어디에 존재한다고 말할 수 없는 시대를 살고 있다.
인텔리전스는 엣지에만 있는 것도, 코어에만 있는 것도 아니다. 둘 다 존재한다.
'CS > 컴퓨터 네트워크' 카테고리의 다른 글
[컴퓨터 네트워크] 33. Network Layer (9) : Link State (0) | 2024.06.08 |
---|---|
[컴퓨터 네트워크] 32. Network Layer (8) : control plane, 라우팅 프로토콜 개요 (0) | 2024.06.08 |
[컴퓨터 네트워크] 30. Network Layer (6) : Generalized Forwarding (0) | 2024.06.06 |
[컴퓨터 네트워크] 29. Network Layer (5) : IPv6 (0) | 2024.06.06 |
[컴퓨터 네트워크] 28. Network Layer (4) : NAT (0) | 2024.06.06 |