OSI 7 Layer - Network Layer Flow

Lee DoYeon·2025년 5월 5일
post-thumbnail

Network Layer(3 Layer)

OSI 7 Layer에서 3층에 존재하는 네트워크 계층

이 계층은 IP주소를 통해 종단간 시스템의 경로를 찾아준다. 이를 Routing이라고 부르며 출발지에서 목적지까지 패킷의 경로를 효율적으로 길을 모색한다. 패킷(Packet)은 네트워크 계층에서 사용되는 데이터 용어이며, 버전, 헤더 길이, 서비스 유형, 전체 길이, 식별자, 플래그, 단편 오프셋, TTL 프로토콜, 헤더 체크섬, 출발지 IP, 목적지 IP, 옵션과 같은 정보를 가지고 있다. 이 정보들을 통해 해당 패킷이 한 Endpoint에서 가고자 하는 목적지 Endpoint를 최적의 방안을 찾아주는 것이 네트워크 계층의 주된 목적이다.

네트워크 계층을 크게 나누어 보자면 데이터 평면과 제어 평면 두 가지로 나누어 볼 수 있다.
데이터 평면은 제어 평면의 지시에 따라 개별 데이터그램(패킷)을 실제로 전달하며, 패킷이 네트워크 장치(스위치, 라우터 등)를 통해 출발지에서 목적지까지 물리적으로 이동하도록 처리하는 네트워크 계층의 실행 단위이다. 제어 평면은 네트워크 전체를 아우르는 구성요소로서, 데이터그램(패킷)이 출발지 호스트부터 목적지 호스트까지의 경로를 따라 어떻게 전달되어야 하는지 뿐만 아니라 네트워크 계층 구성요소와 서비스를 어떻게 설정하고 관리할지 제어한다.
체스로 비유를 들어보자면, 제어 평면은 체스 플레이어(제어 평면, 혹 SDN 컨트롤러)로 체스판 전체를 보고 전략을 세우며, 체스말(데이터 평면, 혹 스위치)에 지시를 내리며, 데이터 평면은 플레이어의 지시에 따라 행동을 한다고 생각하면 편하다.

image

Data Plane(데이터 평면)

데이터 평면의 주요 기능은 포워딩이다. 포워딩이란? 패킷이 라우터의 입력 링크에 도달했을 때 라우터는 그 패킷을 적절한 출력 링크로 이동시켜야 한다. 포워딩은 매우 짧은 시간(보통 몇 나노초) 단위를 갖기에, 대표적으로 하드웨어에서 실행된다. 예시로 광주에서 서울까지 여행을 간다고 가정해보자. 여행 동안 운전자는 많은 교차로를 지날것이다. 이때 포워딩은 한 교차로를 떠나 어떤 도로로 들어설지 결정한다. 그럼 라우터가 어떻게 다음 교차로를 찾는지 라우터의 동작을 알아보자. 라우터에서 필수 불가결한 요소는 포워딩 테이블(Forwarding table)이다. 라우터는 도착하는 패킷 헤더의 필드값을 조사하여 패킷을 전달한다. 이 값을 라우터의 포워딩 테이블의 내부 색인으로 사용한다. 포워딩 테이블 엔트리에 저장되어 있는 헤더의 값은 해당 패킷이 전달되어야 할 라우터의 외부 링크 인터페이스를 나타낸다. 예를 들어 특정 라우터의 헤더값인 0110인 패킷이 도착했다고 가정해 보자. 라우터는 자신의 포워딩 테이블을 보고 이 패킷에 대한 출력 링크 인터페이스를 결정한다.

그럼 포워딩을 담당하는 주체 “라우터”에 대해서 알아보자. 라우터는 네 가지 요소로 정의할 수 있다. 입력 포트, 스위치 구조, 출력 포트, 라우팅 프로세스로 구성된다.

image.png

라우터의 구성 요소

  • 입력 포트 : 입력 포트(Input port)는 여러 기능을 수행한다. 위 그림을 보면 입력 포트의 맨 왼쪽 박스와 출력 포트의 맨 오른쪽 박스는 라우터로 들어오는 입력 링크로, 물리 계층 기능을 수행한다. 또한 입력 포트는 들어오는 링크의 반대편에 있는 링크 계층과 상호 운용하기 위해 필요한 링크 계층 기능을 수행한다. 여기서 ‘포트’라는 용어는 물리적인 입출력 라우터 인터페이스를 의미한다.
  • 스위치 구조 : 스위치 구조(Switch farbic)는 라우터의 입력 포트와 출력 포트를 연결한다. 스위치 구조는 라우터 내부에 포함되어 있다.
  • 출력 포트 : 출력 포트(Output port)는 스위치 구조에서 수신한 패킷을 저장하고 필요한 링크 계층 및 물리 계층 기능을 수행하여 출력 링크로 패킷을 전송한다.
  • 라우팅 프로세서 : 라우팅 프로세서(Routing processor)는 제어 평면 기능을 수행한다.

입력 포트 처리 및 목적지 기반 전송

image.png

입력 포트에서 수행되는 검색은 라우터 동작의 핵심이다. 라우터는 포워딩 테이블을 사용하여 도착 패킷이 스위치 구조를 통해 전달되는 출력 포트를 검색한다. 포워딩 테이블은 라우팅 프로세서에서 계산되거나 갱신되거나 원격 SDN 컨트롤러에서 수신된다. 자 아래 포워딩 테이블 사진을 보면 라우터가 검색하는지 알 수 있을 것이다.

image.png

11001000 00010111 00010000 00000000 ~ 11001000 00010111 00010111 11111111의 목적지 IP 주소가 들어오면 0번의 Link Interface로 보낸다.

스위칭

스위치 구조는 패킷이 입력 포트에서 출력 포트로 실제로 스위칭 되는 구조를 통과하므로 라우터의 핵심이다. 아래와 같이 여러 가지 방법으로 스위칭을 수행할 수 있다.

메모리를 통한 교환, 버스를 통환 교환, 상호연결 네트워크를 통한 교환 등이 존재한다.

image.png

출력 포트 처리

출력 포트 처리는 출력 포트의 메모리에 저장된 패킷을 가져와서 출력 링크를 통해 전송한다. 여기서는 출력을 위한 패킷 선택(즉, 스케줄링) 및 큐 제거, 필요한 링크 계층 및 물리 계층 전송 기능을 포함한다.

image.png

여기서 잠깐. 1. 지연 없이 구조를 통해 도착하는 모든 패킷을 전송하기에 스위치 구조가(입력 라인 속도에 비해) 충분히 빠르지 않으면 어떻게 될까? 또 2. 수위치 구조가 포트 라인 속도보다 N배 빠른 상황이라면 어떻게 될까? 두 가지의 질문은 입력 포트와 출력 포트에 존재하는 Queuing이 해결해 준다. Queuing 설명에 앞서 이전 질문에 답을 내려보자.

첫 번째 질문에 답은 패킷이 스위치 구조를 통해 출력 포트로 전송되기 위해 차례를 기다려야 한다. 두 번째 질문의 답은 대기 중인 패킷의 수가 출력 포트에서 사용 가능한 메모리를 다 소모할 만큼 많아질 수 있다. 이런 상황에서 패킷이 더 들어온다면 저장할 메모리가 충분하지 않아 도착한 패킷을 삭제(drop-tail)하거나 이미 대기중인 하나 이상의 패킷을 제거하여 새로 도착한 패킷을 저장하기 위해 공간을 확보해야 한다.

패킷 스케줄링

Queue에 있는 패킷이 출력 링크를 통해 전송되는 순서를 알아보자. 라우터에서 일반적으로 사용하는 방법은 FCFS(First Com First Serve)이다. 흔히 FIFO로도 잘 알려져 있다.

profile
I can do this all day

0개의 댓글