Network Layer

youngwiki
Pinkgo (토론 | 기여)님의 2025년 4월 9일 (수) 18:39 판 (Router)

상위 문서: 컴퓨터 네트워크

개요

Figure 1. The network layer
Figure 1. The network layer

네트워크 계층은 송신 호스트(host)에서 수신 호스트까지의 종단 간 데이터 전송을 담당하는 계층이다. Figure 1은 호스트 H1과 H2와, 그 사이의 경로에 있는 여러 라우터(router)들로 구성된 네트워크를 보여준다. H1이 H2에게 정보를 보내고 있다고 가정해 보고, 이때 H1과 H2 및 그 사이의 라우터들에 있는 network layer의 역할을 살펴보자. H1의 network layer는 H1의 transpot layer로부터 세그먼트(segment)를 받아, 각 세그먼트를 데이터그램(datagram)으로 캡슐화하고, 그런 다음 이 데이터그램들을 근처 라우터인 R1으로 보낸다. 수신 호스트인 H2에서는, network layer가 근처 라우터 R2로부터 데이터그램을 받아, transport layer 세그먼트를 추출하고, 이 세그먼트들을 H2의 transport layer로 전달한다. 이와 같이 network layer는 transport layer가 애플리케이션(application) 간 통신을 지원할 수 있도록, 호스트 간 통신 서비스를 제공한다. 해당 문서에서는 forwarding과 routing과 같은 핵심 기능 부터, 라우터의 작동 방식 등, network layer의 전반적인 내용들을 다룬다.

Routing and Forwarding

Figure 2. Control plane: The traditional approach
Figure 2. Control plane: The traditional approach

Network layer의 주된 역할은 패킷을 송신 호스트에서 수신 호스트로 이동시키는 것이다. 이를 구현하기 위해 netwrok layer는 두 부분으로 나뉜다. 바로 data planecontrol plane이다. data palne은 forwarding 과정을 담당하며, control plane은 routing을 담당한다. Forwarding이란 라우터의 입력 링크(link)로 들어온 패킷을 적절한 출력 링크로 이동시키는 작업이다. 예를 들어, figure 1에서 호스트 H1에서 라우터 R1로 도착한 패킷은 H2로 향하는 경로 상의 다음 라우터로 전달되는데, 이때 forwarding table이 사용된다. Forwarding table에 저장된 항목 들은 해당 패킷이 전송되어야 할 출력 링크를 나타낸다. 따라서 forwarding은 라우터가 입력 링크로 도착한 패킷의 헤더의 필드 값을 검사하고, 해당 값을 이용해 forwarding table을 조회하여 출력 링크를 결정하는 방식으로 실행된다. 해당 작업은 지엽적으로(local), 매 라우터 마다 일어나는 작업이며, 하드웨어 수준에서 구현되어 매우 짧은 시간(일반적으로 몇 나노초)동안 수행된다.
또한 routing은 패킷이 송신자에서 수신자로 어떤 경로(end-to-end path)를 따라 이동할지를 결정하는 작업이다. 이러한 경로를 계산하는 알고리즘을 routing 알고리즘이라고 한다. 예를 들어 라우팅 알고리즘은 figure 1에서 H1에서 H2로 가는 경로를 결정한다. 라우팅은 종단간 경로를 결정하기 때문에 네트워크 전역적(network-wide)으로 일어나며, 소프트웨어 수준에서 구현되어 상대적으로 매우 긴 시간(일반적으로 멸 밀리초)동안 수행된다. 이때 routing이 최종적으로 만드는 결과물은 forwarding table이다. 이때 control plane이 forwarding table을 어떻게 각 라우터에 설정하는 지에는 두가지 접근 방식이 있다. 하나는 traditional routing algorithms이고, 하나는 software-defined networking(SDN)이다.

Control Plane: The Traditional Approach

Figure 2는 전통적인 control plane의 forwarding table에 대한 접근 방식을 보여준다. 각각의 라우터들은 개별적으로 routing 알고리즘을 실행하며, forwarding 및 routing 기능 모두가 라우터 내에 포함되어 있다. 즉, routing을 통해 다음으로 어떤 라우터에게 패킷을 보낼지를 결정하고, forwarding을 통해서 실제로 패킷을 보낼 출력 링크를 찾는 것이다.
이때 라우터는 routing 알고리즘을 수행하기 위해 다른 라우터의 routing 알고리즘 기능과 통신하여 forwarding table을 구현한다. 이는 Figure 2에 잘 나타나 있다. Figure 2에 나타나 있듯이 routing 알고리즘은 control plane에서 실행되며, 개별 라우터에서 실행된 routing 알고리즘에 의해 forwarding table이 생성되고, data plane에서 비로소 forwarding이 구현된다.
이러한 방식은 치명적인 약점을 가지고 있다. 수많은 라우터에 의해서 routing 알고리즘이 수행되고, 각각의 결과를 기반으로 forwarding이 수행되기 때문에 몇몇의 라우터가 오작동을 할 수 있다는 것이다. 최악의 경우, 한 지역 혹은 한 나라 전체의 인테넷이 마비될 수도 있다.

Control Plane: The SDN Approach

Figure 2. Control Plane: The SDN approach
Figure 2. Control Plane: The SDN approach

SDN(software-defined networking) 방식은 이러한 분산적인 처리 방식의 한계를 해결하고 일관성과 효율성을 높이기 위해 도입된 방식이다. 이는 Figure 3가 잘 보여주고 있다. figure 2와 3의 data plane 구성은 동일하지만, figure 3에서는 control plane 기능이 물리적인 라우터에서 분리되어 있으며, 라우터는 오직 포워딩만 수행하고, remote controller가 forwarding table을 계산하고 배포한다. 이때 각각의 라우터 내에는 control agent(CA)가 존재해 remote controller로부터 forwarding table을 수신할 수 있도록 한다.
SDN에서 software-defined라는 말은 forwarding table을 계산하고 라우터들과 상호작용하는 controller가 소프트웨어로 구현되어 있다는 의미이다. 즉 이는 각 라우터가 스스로 routing 알고리즘을 수행하는 전통적인 하드웨어 기반의 방식과 달리, 소프트웨어 기반의 중앙 집중형 제어 방식이라는 점에서 큰 차이가 있다.

Network service model

Network layer는 개별적인 데이터그램 전송의 면에서 다음과 같은 서비스들을 제공할 수 있다:

  1. Guaranteed delivery: 이 서비스는 송신 호스트에서 전송한 패킷이 결국 목적지 호스트에 도착할 것을 보장한다.
  2. Guaranteed delivery with bou nded delay: 특정 호스트 사이에 정해진 delay 내에 도착할 것을 보장한다.

Network layer는 데이터 그램의 흐름(flow of datagrams) 전송의 면에서 다음과 같은 서비스들을 제공할 수 있다:

  1. In-order packet delivery: 패킷이 전송된 순서대로 목적지에 도착함을 보장한다.
  2. Guaranteed minimal bandwidth: Networking layer는 호스트 사이의 특정 bandwidth를 가지는 링크처럼 작동한다.
  3. Restrictions on changes in inter-packet spacing: 이는 datagram이 수신되는 간격을 조정하여 영상 등을 시청할 때 끊기지 않도록 한다.

이외에도 network layer는 security와 같이 transport layer의 세그먼트에 대한 기밀성을 제공하는 등의 서비스를 제공한다.

Router

자세한 내용은 Router 문서를 참조하십시오.

각주