본문 바로가기
학교공부/[컴퓨터 네트워크]

[컴퓨터 네트워크] - Network Layer_Middleboxes

by 윈디개 2025. 6. 6.

지난 글에서는 forwarding 방식을 일반화시킨 genralized forwarding 방식을 설명하며 flow table과 OpenFlow에 대해서 정리해 보았다. 이번 글에서는 3계층의 또 다른 device인 Middlebox에 대해서 정리해 보려고 한다.


1. Middleboxes

사실 예전에 이미 middlebox의 한 예시를 살펴본 적이 있다. 바로 NAT(Network Address Translation)이다. NAT는 분명히 3계층(IP 계층)에 위치하지만, 실제로는 4계층의 포트 번호까지 참조하여 동작하기 때문에 정통적인 IP 라우터와는 조금 다른, 경계선에 있는 장비라고 볼 수 있다. 즉, end-to-end argument를 위반하는 대표적인 예시이기도 하다.  이처럼 기존의 순수한 IP 라우터가 아닌, 기능이 추가된 다양한 3계층 장비들이 middleboxes이다.

 

 사실, Middle boxes는 3계층 뿐 아니라 모든 계층에 존재한다. 다음 그림을 한 번 살펴보자.

위 그림은 middleboxes의 종류를 나타낸 것이다. 차례대로 한 번 정리해 보면,

  • NAT
  • Application-specifif : CDN
  • Firewalls, IDS : 보안에 있어서는 필수적인 middlebox이다. IDS는 Invasion Detection System의 줄임말로 침입 탐지 시스템이다.
  • Load balancers : 서버의 역할을 분산시키는 장치
  • Caches : 웹 캐시 서버와 같은 장치들

 

 미들박스는 처음에는 closed(=proprietary)된 hardware solution이었다. 즉, 제3자에게는 open되지 않은 hardware 측면에서 구현한 장치들이었다.

 

하지만 최근에는 Whitebox Hardware 기반으로 진화하면서, Open API를 통해 제어 가능하고, Match + Action 방식으로 프로그래밍 가능한 소프트웨어 기반 네트워크 기능으로 발전하고 있다.

 

 이에 맞춰 등장한 것이 SDN NFV(Network Functions Virtualization)이다. SDN과 NFV는 약간의 차이점이 존재한다.

  • SDN(Software Defined Networking) : 네트워크 장비의 제어 로직(Control Plane)을 중앙에서 관리하는 것
  • NFV(Network Functions Virtualization) : 새로 산 하드웨어를 가지고 router 역할/network 역할을 할 지 프로그래밍으로 만들 수 있게 하는 것.

2. The IP hourglass(모래시계)

 다음 그림과 같이 초기 인터넷의 계층구조는 모래시계 구조였다.

 5,4,2,1 계층은 수많은 프로토콜이 존재했고, 3계층에는 오직 IP 프로토콜 하나만이 존재했다. 이 IP는 인터넷이 작동하기 위해 반드시 필요한 핵심 프로토콜이었다. 4계층과 2계층을 연결해주는 접착제 같은 역할을 해주었는데, IP가 구현되어 있어야 인터넷이 정상적으로 작동할 수 있었다. 

 

그렇지만 위에 설명했던 미들박스들의 등장으로 다음 그림과 같이 hourglass의 순수성이 깨져버렸다.

3계층에 IP 프로토콜 말고도, 미들박스들인 NAT, caching, NFV, Firewalls 등이 들어가면서, 초기의 hourglass의 모습에서 변화가 일어났다.


3. Principles of the Internet

 사실 인터넷의 프로토콜은 다음과 같은 철칙을 기반으로 만들어졌다.

The goal is connectivity, the tool is the Internet Protocol, and the intelligence is end to end

rather than hidden in the network.

위의 원칙을 기반으로 만들어진 것이 바로 초창기의 hourglass 모습이다. 인터넷은 군사 목적으로 설계되었기 때문에, 중간 경로가 끊겨도 우회하여 데이터를 전달할 수 있는 연결성이 가장 중요한 요소였다.  또한, 중요한 기능일수록 simple하게 설계하여, IP 계층은 간단하고 핵심적인 구조를 유지했다.

 

 또한, intelligence와 같은 복잡한 기능들은 네트워크 내부가 아닌 end system에 위치하도록 했다. 즉, 네트워크는 단순하게, end system은 똑똑하게 만드는 것이 인터넷 설계의 기본 철학이었다.


4. The end-end argument

 그럼 end-end argument는 대체 무엇일까? 이는 네트워크의 각 계층이 자신과 대응되는 상대 계층과만 직접적으로 데이터를 주고받고, 중간 계층이 무슨 일을 하든 상관하지 않는다는 설계 철학이다.

 

Reliable data transfer, congestion과 같은 것들은 위의 인터넷 원칙에 따르면 end system에서 구현하는 것이 당연하다. 위 그림에서도, rdt는 end system인 transport 계층에서 일어나도록 설계했다.

 

 그렇지만, 사실 더 빠른 재전송을 위해서는 손실이 일어난 제일 가까운 router에서 재전송을 하게 만드는 것이 더 효과적이다. 다음 그림을 한 번 살펴보자.

위 그림은, hop-by-hop으로 rdt(reliable data transfer)을 구현한 경우이다. 즉, 네트워크 계층(router 수준)에서 손실을 감지하고 즉시 재전송하는 구조이다. 이렇게 하면 일시적으로는 전송 속도가 빨라질 수 있지만, 결과적으로는 다음과 같은 문제가 발생하게 된다

  • 라우터가 복잡해진다.
  • 3계층인 네트워크 계층이 transport 계층의 역할까지 떠맡게 되어, 계층 간 분리가 무너진다.
  • 이는 결국 end-to-end argument를 위배하게 된다.

5. Intelligence의 위치

 인터넷 원칙을 따르면, intelligence는 end system에서 구현하는 것이 맞다. 다음 그림을 참고하면,

 

왼쪽의 인터넷 초창기에는 원칙에 따라 end system에 구현되어 있다. 그렇지만 오른쪽에는 network 가운데에도 intelligence가 구현되어 있다. 그 이유는

  • 프로그래밍 가능한 네트워크 장치들의 등장(NAT)
  • CDN, 클라우드 인프라와 같은 application-level infrastructure의 발전
  • 네트워크 자체에 computing 자원이 내장되면서, 중간 노드에서도 판단과 처리가 가능해짐

때문이다.

 

 과거에는 지능의 위치가 분명히 end system에만 존재했지만, 현대 인터넷에서는 그 구분이 점점 무의미해지고 있다. 물론 이는 인터넷 원칙(end-to-end principle)에 위배되는 경우이지만, 사용자 입장에서는 신경 쓸 필요 없이 시스템이 잘 동작하기만 하면 된다.

+)학계나 산업계에서는 이러한 변화를 받아들여야 한다고..