지금까지 애플리케이션 계층에서 트랜스포트 계층까지의 통신 서비스에 대해서 알아보았다. 하지만 이 상위 계층들이 하위 계층으로 데이터를 넘겨준다는 것만 알고 넘어가 그 아래의 통신 서비스는 어떻게 이루어지는지 자세히 알지 못하고 넘어갔다. 이번 장에서는 네트워크의 코어 단에 속하는 네트워크 계층을 알아보도록 해 호스트 사이의 통신을 파악해보자. 우선 네트워크 계층은 서로 상호작용하는 데이터 평면(data plain)과 제어 평면(control plain)의 두 장으로 나누어서 기술했다. 이는 네트워크 계층이 라우터의 입,출력 링크 과정을 다루는 데이터 평면과, 어떤 경로를 통해 통신을 구성할 것인지를 다루는 제어 평면이 명확하게 나누어져 있기 때문이다. 이 두 장의 네트워크 계층을 통해 현대적인 관점에서 컴퓨터 네트워킹의 원리를 볼 수 있다.
1. 네트워크 계층 개요
네트워크 계층에 대해서 본격적으로 알아보기 전에 자주 혼동하는 단어를 짚고 가자. 흔히 사용하는 포워딩과 라우팅, 두 단어는 송신 호스트에서 수신 호스트로 패킷을 전달하는 공통적인 기능이 있지만, 두 단어의 차이는 다음과 같다.
포워딩 : 패킷이 라우터의 입력 링크에 도달했을 때 그 패킷을 적절한 출력 링크로 이동시키는 것. 데이터 평면에서 구현되는 가장 중요하고 기본적인 기능이다.
라우팅 : 송신자가 수신자에게 패킷을 전송할 때, 어떤 라우팅 경로를 통해 전송할 것인지를 결정하는 것. 이러한 경로를 계산하는 알고리즘을 '라우팅 알고리즘(routing algorithm)' 이라고 한다. 이 기능은 네트워크 제어 평면에서 구현된다.
포워딩과 라우팅은 네트워크 계층에서 중요한 역할을 하지만 각각 데이터 평면과 제어 평면에서 구현된다. 또 포워딩은 기능하는데 수 나노초 단위가 소요되지만, 라우팅은 훨씬 더 긴 초 단위가 소요되기도 한다.
이제 네트워크 계층에서 제공할 수 있는 서비스를 알아보자.
1. 보장된 전달
2. 지연 제한 이내의 보장된 전달
3. 순서화 패킷 전달
4. 최소 대역폭 보장
5. 보안 서비스
이 외에도 수많은 서비스를 제공할 수 있지만 기본적인 것은 위의 5가지와 같다. 하지만 인터넷 네트워크 계층은 '최선형 서비스(best effort service)'라고 알려진 서비스를 제공한다. 최선형 서비스는 순서화 패킷 전달을 제공하지 않을 뿐만 아니라 전달 자체를 보장하지도 않는다. 지연 시간 내의 전달도 보장되지 않으며 최소 대역폭 또한 없다. 언뜻 보면 어떤 것도 제공하지 않는 쓸모없는 서비스처럼 보이지만(실제로 더욱 진보적인 대체재가 존재한다) 현재 많은 수의 애플리케이션(ex : 넷플릭스, VOIP, 스카이프 등)들이 인터넷 네트워크 서비스 모델을 사용하고 있다.
네트워크 계층에서 가장 중요한 요소는 라우터일 것이다.
라우터는 입력 포트와 스위치 구조, 출력 포츠, 라우팅 프로세서로 이루어져 있다. 라우터는 입력 포트에서 입력받은 데이터를 라우팅 프로세서가 가지고 있는 포워딩 테이블을 통해 어떤 인터페이스로 출력할 것인지를 결정하는 방식으로 데이터를 전달한다. 스위치 구조를 통해서 알맞는 출력 포트로 보내는 것이다. 이렇게 목적지 주소를 찾은 다음에(match) 스위치 구조를 통해 지정된 출력 포트로 보내는 것은(action) 일반적으로 다양한 네트워크 장치에서 사용되는 match & action 방식이다.
입,출력 포트 사이의 스위치 구조를 통해 패킷을 전달하는 방식은 필연적으로 패킷의 대기를 유발한다. 원형 교차로에서 차량들이 들어오고 나가기 전 일정 시간을 기다려야 하는 것처럼 패킷 또한 입,출력 포트 사이에서 큐잉을 경험하게 된다. 그 중 입력 큐잉은 스위치 구조로 도착하는 전송량이 스위치 구조의 처리보다 느릴 경우 발생하는 큐잉이다. 이 경우 앞의 대기중인 패킷 때문에 대기할 필요가 없는 패킷도 대기해야만 하는 현상을 'HOL(head of the line) 차단'이라고 한다. 이 HOL 현상을 겪는 패킷은 자신이 갈 출력 포트가 사용 중이 아니더라도 대기해야만 한다.출력 큐잉 또한 발생할 수 있는데, 스위치 구조에서 출력 포트로 들어온 패킷을 처리하지 못할 때 발생한다. 이러한 큐잉의 발생 때문에 패킷 스케쥴링의 필요성이 대두된다.
큐에 있는 패킷이 출력 링크를 통해 전송되는 순서를 결정하는 문제가 발생하였다. 가장 기본적인 방식은 'FCFS(first come first served)' 방식일 것이다. FCFS 말고도 우선순위를 선정하는 라운드 로빈 큐잉같은 스케쥴링 방식이 존재한다. FCFS는 말 그대로 먼저 온 패킷을 먼저 처리하는 단순한 스케쥴링 방식이다. 하지만 모든 패킷이 동일한 중요도를 가지지는 않을 것이다. 패킷에 우선순위에 기반한 클래스를 부여하는 것이 라운드 로빈 큐잉이다. 라운드 로빈 큐잉에서는 우선순위 별로 클래스를 나누고 클래스 간에 동일한 시간을 부여해 그 시간 동안만 패킷을 전송하도록 허용한다. 이 클래스 간에는 우선순위가 존재하지 않는다. WFQ 규칙은 클래스 마다의 중요도 또한 부여해 클래스 간 가중치 별로 다른 시간을 부여받는다.
2. IP 주소 체계
다음은 인터넷과 IP 네트워크 계층의 핵심적 측면에 대해서 알아보자. IP는 IPv4와 이의 대체재인 IPv6가 존재한다. 네트워크 계층을 더 깊게 이해하기 위해 IP 주소 체계를 알아보는 것은 중요한 과정이다.
IP 주소는 32비트 길이로 이루어진 십진수로 이루어져 있다.(ex: 193.32.216.9) 전 세계의 모든 호스트와 라우터의 인터페이스는 고유한 IP주소를 같는다. 이 주소는 마음대로 결정되는 것이 아닌 서브넷이 결정한다. 서브넷은 다수의 호스트들과 하나의 라우터 인터페이스로 연결된 네트워크로 구성된다. 이 서브넷 내의 호스트들은 일부의 동일한 IP 주소를 할당받게 되고, 나머지 자리 숫자를 통해 각각의 호스트를 구별하게 된다.
그렇다면 이 IP 주소는 어떻게 할당되는 걸까. 인터넷 주소 할당 방식으로 'CIDR(Classless Interdomain routing)'이 있다. CIDR는 서브넷 주소 체계를 일반화하는데 기여했다. 호스트에는 '동적 호스트 구성 프로토콜(dynamic host configuration protocol)'로 불리는 동적인 IP 주소 할당 방식을 사용한다.
이 방식을 통해 네트워크 관리자는 해당 호스트가 네트워크에 접속하고자 할 때마다 동일하거나 임시적인 IP 주소를 할당받게 해줄 수 있다. 이는 빈번하게 서브넷을 이동하고 수동으로 IP주소를 할당하기 귀찮아하는 이들에게 큰 도움이 되었다.
3. 소프트웨어 기반 네트워크(SDN)
지금까지 알아본 라우터의 기능들은 모두 패킷의 목적지 주소만을 기반으로 포워딩을 결정했다. 하지만 '소프트웨어 정의 네트워킹(software defined networking)'은 최근 네트워크 계층 기능과 링크 계층 기능을 통합함으로서 라우터가 더 다양한 기능을 할 수 있도록 하였다. 이는 위에서 언급한 match & action 을 통해 구현되는데, 패킷의 헤더를 분석해 어떤 부분이 일치하는지 찾고, 해당 헤더에 따른 행동을 하여 다양한 기능을 수행한다. 이 기능은 단순한 포워딩에서 패킷을 삭제하는 드롭핑, 패킷의 값을 다시 쓰는 수정, 로드 밸런싱, 특정한 호스트에서의 패킷만 수신하는 방화벽 등이 있다. 이렇게 소프트웨어 기반 네트워크는 라우터를 단순히 패킷을 포워딩하는 역할에서 벗어나 다양한 기능을 동작하는 미들 박스로써의 기능을 할 수 있게 하였다. 이같은 기능은 다음 장인 네트워크 계층의 제어 평면에서 활동하는 SDN 컨트롤러가 전반적으로 관리한다. 네트워크 관리자는 이렇게 통합된 라우터들의 단일 컨트롤러를 사용해 각각의 라우터들을 조작할 필요가 없어 관리가 한 층 더 용이해진다.
여기까지 네트워크 계층의 데이터 평면을 살펴보았다. 본 장을 통해 데이터 평면에서 라우터의 역할과 기능(패킷 스케쥴링,포워딩 등)과 함께 IP의 주소체계와 주소가 지정되는 방식, 동적인 주소 할당(DHCP), 또 소프트웨어 기반 네트워크를 통한 라우터의 다양한 기능을 알 수 있었다. 다음 장에서는 라우터 간 패킷의 경로를 설정하는 제어 평면에 대하여 살펴 본다. 경로 설정을 위한 알고리즘부터 네트워크 관리가 어떻게 수행되는지, SDN의 더 자세한 역할 등을 다음 장에서 소개할 예정이다.
'Network' 카테고리의 다른 글
용어를 확실히 - stateful vs stateless (0) | 2019.12.24 |
---|---|
컴퓨터 네트워크 4-2. 네트워크 계층 : 제어 평면 (0) | 2019.12.15 |
컴퓨터 네트워크 3. 트랜스 포트 계층 (0) | 2019.12.12 |
컴퓨터 네트워크 2. 애플리케이션 계층 (0) | 2019.12.08 |
컴퓨터 네트워크 1. 네트워크란? (0) | 2019.12.06 |