Data plane, Control plane

2025-06-13

📡 네트워크 계층의 목표

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-13_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_6.04.54.png 네트워크 계층의 데이터 플레인(data plane)에 초점을 맞춰 네트워크 계층이 어떤 서비스 모델을 제공하는지, 라우팅과 포워딩의 차이, 실제 라우터가 어떻게 동작하는지를 살펴본다. IP 주소 체계를 포함한 주소 지정 방식, 전통적인 목적지 기반 포워딩을 확장한 generalized forwarding 개념, 그리고 이러한 구조가 전체 인터넷 아키텍처에서 어떤 역할을 수행하는지도 함께 다룬다.

실제 인터넷 환경에서 어떻게 구현되는지도 역시 중요한 학습 주제다. 구체적으로는 IP 프로토콜의 데이터그램 구조와 동작 방식, 여러 장비가 하나의 공용 IP 주소를 공유할 수 있게 해주는 NAT(Network Address Translation), 그리고 방화벽이나 프록시와 같은 미들박스(middleboxes)의 역할과 동작 방식까지 살펴본다.

📡 Data plane

네트워크 계층 서비스와 프로토콜

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-04-14_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_3.02.55.png 네트워크 계층은 송신 호스트에서 수신 호스트로 전송 계층의 세그먼트를 전달하는 역할을 한다.

송신 측에서는 전송 계층에서 생성된 세그먼트를 IP 데이터그램으로 캡슐화한 후, 링크 계층으로 넘긴다. 수신 측에서는 이 데이터그램에서 세그먼트를 추출해 전송 계층에 전달한다. 이 과정을 통해 애플리케이션 데이터는 여러 네트워크를 거쳐 목적지에 도달한다.

네트워크 계층 프로토콜은 인터넷에 연결된 모든 장치에 구현되어 있다. 호스트뿐 아니라, 경로를 선택하고 데이터그램을 전달하는 라우터에도 포함된다. 라우터는 수신한 데이터그램의 IP 헤더를 확인해 목적지를 파악하고, 이를 적절한 출력 포트로 전송한다.

네트워크 계층은 모바일, 기업, ISP, 데이터센터 등 다양한 종류의 네트워크를 하나로 연결하는 구조를 형성한다. 이질적인 네트워크들이 함께 동작할 수 있는 이유는 IP(Internet Protocol)라는 공통된 프로토콜이 존재하기 때문이다. IP는 서로 다른 네트워크 간 통신을 가능하게 해 인터넷이 전 세계적으로 작동할 수 있도록 한다.

네트워크 계층의 두 가지 주요 기능

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-04-14_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_3.04.14.png 네트워크 계층은 포워딩forwarding_{forwarding}과 라우팅routing_{routing}이라는 두 가지 필수적인 기능을 수행한다.

포워딩은 라우터가 입력 링크로 받은 패킷을 적절한 출력 링크로 이동시키는 과정이다. 로컬 작업으로, 각 라우터가 자신의 포워딩 테이블을 참조해 개별 패킷을 어디로 보낼지 결정한다. 여행에 비유하자면, 포워딩은 특정 교차로나 인터체인지를 통과하는 과정과 유사하다.

이 두 기능은 상호 보완적이다. 라우팅이 전체 경로의 청사진을 그린다면, 포워딩은 그 청사진에 따라 각 지점에서 다음 홉으로 패킷을 전달하는 작업을 수행한다. 네트워크 계층의 효율성은 이 두 기능이 얼마나 잘 조화를 이루는지에 달려 있다.

네트워크 계층: data plane, control plane

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-04-14_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_3.04.23.png 네트워크 계층은 기능적으로 data plane과 control plane이라는 두 가지 구분된 영역으로 나눌 수 있다.

data plane은 라우터 단위의 지역적local_{local} 기능을 담당한다. 주요 역할은 라우터의 입력 포트로 도착한 데이터그램을 어떤 출력 포트로 전달할지 결정하는 것이다. 이 결정은 주로 패킷 헤더에 있는 값들(특히 목적지 주소)을 검사해 이루어진다. data plane은 고속으로 동작해야 하므로 주로 하드웨어로 구현되고 나노초 단위의 시간 프레임 내에서 작동한다.

반면, control plane은 네트워크 전반에 걸친 논리를 구현한다. 출발지 호스트에서 목적지 호스트까지 데이터그램이 라우터들을 통해 어떻게 라우팅될지 결정한다. control plane은 밀리초 단위의 시간 프레임에서 작동하고 주로 소프트웨어로 구현된다.

control plane 구현에는 두 가지 접근 방식이 있다.

  • 전통적인 라우팅 알고리즘
    • 각 라우터에 개별적으로 구현되어 있으며, 라우터들은 서로 라우팅 정보를 교환해 포워딩 테이블을 구성합니다.
  • 소프트웨어 정의 네트워킹SDN_{SDN}
    • 중앙집중식 접근 방식으로, 라우팅 결정은 원격 서버(컨트롤러)에서 이루어지고, 이 결정이 각 라우터의 포워딩 테이블에 설치됩니다.

📡 Control plane

라우터별 control plane

image.png 전통적인 네트워크 구조에서는 각 라우터가 자체적으로 control plane 기능을 수행한다. 라우팅 알고리즘은 라우터마다 독립적으로 구현되고 라우터 간 상호작용을 통해 전체 네트워크의 control plane이 분산된 형태로 구성된다.

각 라우터는 인접한 라우터들과 주기적으로 라우팅 정보를 교환하고 이를 바탕으로 네트워크 토폴로지를 학습한다. 그 결과로 최적 경로를 계산해 포워딩 테이블에 저장한다. 포워딩 테이블은 데이터 패킷을 올바른 경로로 전달하기 위해 data plane이 참조하는 중요한 자료다.

포워딩 과정 자체는 단순하다. 라우터는 수신한 패킷의 헤더 중 목적지 IP 주소를 확인하고, 포워딩 테이블에서 해당 항목을 찾아 출력 포트를 결정한다. 포워딩은 테이블 기반의 헤더 조회를 통해 이루어진다.

이 구조는 control plane이 라우터별로 분산되어 있어 네트워크 확장성 측면에서 유리하다. 각 라우터가 독립적으로 동작하므로 단일 장애점이 없다는 장점도 있다. 하지만 일일이 정책을 정해줘야 하기 때문에, 네트워크 전체에 정책을 일관되게 적용하기 어려워 구성과 운영이 복잡해질 수 있다.

소프트웨어 정의 네트워킹(SDN) control plane

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-04-14_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_3.20.04.png 소프트웨어 정의 네트워킹(SDN: Software Defined Networking)은 네트워크의 control plane을 중앙에서 관리하는 방식이다. 전통적인 네트워크에서는 각 라우터가 자체적으로 라우팅 결정을 내리지만, SDN에서는 이러한 기능이 중앙의 컨트롤러로 옮겨진다.

기존의 분산형 네트워크 구조는 유연하지만, 네트워크 상태를 통합적으로 파악하거나 일관된 정책을 적용하는 데에는 한계가 있다. 이런 문제를 해결하기 위한 접근이 바로 소프트웨어 정의 네트워킹(SDN)이다.

컨트롤러는 네트워크 전체 상태에 대한 전반적인 정보를 가지고 있고 이걸 바탕으로 각 라우터에 필요한 포워딩 테이블을 계산해 전달한다. 이 과정에는 OpenFlow 같은 표준 프로토콜이 사용된다.

SDN 구조에서는 라우터가 제어 기능을 수행하지 않는다. 컨트롤러로부터 받은 포워딩 테이블을 참고해 data plane 수준에서 패킷을 전달하는 역할만 한다. 제어와 실행이 분리되어 라우터는 결정이 아닌 실행만 맡는다.

이렇게 되면 네트워크 운영을 단순화할 수 있고정책을 일관되게 적용할 수 있다는 장점이 있다. 또한 새로운 기능이나 정책을 컨트롤러에만 반영하면 전체 네트워크에 빠르게 확산시킬 수 있어, 트래픽 관리, 보안, 가상화 등 다양한 기능 구현에 유리하다.

하지만 중앙 컨트롤러는 단일 장애점(Single Point of Failure)이 될 수 있고, 네트워크 규모가 커질수록 컨트롤러의 부하와 확장성 문제가 나타날 수 있다. 이를 보완하기 위해 최근에는 복수의 컨트롤러를 사용하는 분산형 구조도 함께 연구되고 있다.

네트워크 계층 서비스 모델

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-04-14_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_3.20.14.png 네트워크 서비스 모델은 송신자에서 수신자로 데이터그램을 전달하는 “채널”이 어떤 수준의 서비스 보장을 제공할지를 정의한다. 이 모델은 단일 데이터그램에 대해 적용될 수도 있고, 데이터그램의 연속적인 흐름(플로우)에 대해 적용될 수도 있다. 개별 데이터그램에 대한 서비스로는 데이터그램이 반드시 목적지까지 전달되는 것을 보장하는 방식이나, 40밀리초 이하의 지연 시간 내에 도달할 것을 보장하는 방식이 있다.

반면, 플로우 단위의 서비스에서는 더 정교한 보장이 필요하다. 예를 들어 데이터그램이 송신 순서대로 수신되도록 보장하거나, 특정 플로우에 대해 최소한의 대역폭을 보장하거나, 각 패킷 간의 간격이 일정 수준 이상 변하지 않도록 제한하는 방식이 해당한다.

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-04-14_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_3.20.25.png 네트워크 계층의 서비스 모델은 데이터그램 전송 시 어떤 품질 보장을 제공하는지를 정의하고, 네트워크 아키텍처가 애플리케이션에게 어떤 수준의 신뢰성과 성능을 제공할 수 있는지를 나타낸다. 현재의 인터넷은 best-effort 서비스 모델을 채택하고 있어 전송되는 데이터그램에 대해 대역폭, 손실 방지, 순서 보장, 지연 시간 등에 대해 아무런 보장을 제공하지 않는다.

image.png 반면 ATM 네트워크는 Constant Bit Rate(CBR) 모델을 통해 고정된 대역폭을 제공하고, 패킷 손실 없이 순서와 타이밍까지 보장하는 높은 수준의 서비스를 제공한다. 같은 ATM 기반이라도 Available Bit Rate(ABR) 모델은 최소 대역폭만 보장하고, 그 외 품질 요소들은 보장하지 않는다.

인터넷 환경에서도 품질 보장을 제공하려는 시도로 Intserv(Integrated Services)와 Diffserv(Differentiated Services)라는 두 가지 모델이 있다.

Intserv는 RFC 1633에 정의되어 데이터그램의 성공적인 목적지 전달은 물론, 도착 순서와 지연 시간까지 명시적으로 보장해 종단 간 흐름에 대해 필요한 대역폭을 사전에 예약하는 구조다. 이에 비해 Diffserv는 RFC 2475에서 정의되어 흐름이 아닌 트래픽 클래스 단위로 차별화된 처리를 통해 QoS를 제공한다. Diffserv는 일부 조건에서 순서나 지연, 대역폭에 대한 상대적 보장을 가능하게 하지만 Intserv처럼 정밀한 품질 보장을 명시적으로 제공하지는 않는다.

best-effort 모델에 대한 고찰

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-04-14_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_3.25.23.png 인터넷은 전 세계적으로 수많은 네트워크와 장비들이 연결되어 형성된 구조다. 이처럼 이질적인 환경에서 통일된 품질 보장을 제공하는 것은 기술적으로나 운영 측면에서 많은 제약이 따른다. 이러한 배경 속에서, 인터넷은 복잡한 보장 없이도 동작 가능한 단순한 전송 모델, 즉 best-effort 모델을 채택하게 되었다.

best-effort 모델은 가능한 한 데이터를 전달하되, 지연, 손실, 순서 보장 등을 명시적으로 보장하지 않는다. 그 대신 구현이 단순하고 확장성이 뛰어나 다양한 환경에서 손쉽게 도입될 수 있었다. 이 점이 인터넷이 빠르게 확산되는 데 중요한 역할을 했다.

충분한 대역폭이 확보된 환경에서는 실시간 음성 통화나 화상 회의처럼 지연에 민감한 애플리케이션도 대부분의 경우 수용 가능한 품질을 유지할 수 있다. 명시적인 보장 없이도 서비스 제공이 가능했던 것이다. 애플리케이션 계층에서도 이러한 한계를 보완할 수 있었다. 데이터센터와 콘텐츠 전송 네트워크(CDN)는 사용자와 가까운 위치에서 서비스를 제공함으로써 지연을 줄이고 전송 효율을 높였다. 분산된 애플리케이션 구조를 통해 네트워크 계층이 복잡한 보장을 제공하지 않아도 안정적인 사용자 경험이 가능해졌다.

게다가 탄력적인 애플리케이션은 네트워크 상황에 맞춰 전송 속도를 조절하는 혼잡 제어 메커니즘을 통해 혼잡 상태에서도 전체적인 안정성과 공정성을 유지할 수 있었다. 결과적으로 best-effort 모델은 단순함과 실용성이라는 강점을 바탕으로, 인터넷의 확장성과 유연성을 이끌어낸 설계가 될 수 있었다.