저번 장의 네트워크 계층 : 데이터 평면에 이어서 이번 장에서는 네트워크 계층의 제어 평면에 대해서 알아보자. 라우터의 동작 원리나 패킷의 이동 방식을 알아보았던 데이터 평면과는 달리 네트워크 계층의 제어 평면 장에서는 패킷의 라우팅 이동 경로를 설정하는 라우팅 알고리즘과 소프트웨어 정의 네트워크가 어떻게 네트워크 계층을 데이터와 제어 평면으로 분리할 수 있었는지 자세히 알아볼 수 있다. 또 IP 네트워크의 관리에 사용되는 프로토콜인 'ICMP(internet control massage protocol)'과 'SNMP(simple network management protocol)'에 대해서도 알아보자.
1. 제어 평면의 개요
라우터는 입력 포트로 들어온 패킷의 헤더를 조사해 가공하거나 올바른 출력 포트로 내보내는 역할을 한다. 이 역할을 수행하기 위해 필요한 것이 포워딩 테이블이나 플로우 테이블이다. 이 포워딩, 플로우 테이블이 설정되고 유지되는 방법에는 두 가지가 있다.
1. 라우터별 제어 : 포워딩과 라우팅 기능이 개별 라우터에 포함되어 있어 라우팅 알고리즘이 라우터 각각에서 동작하는 경우이다.
2. 논리적으로 중앙 집중된 제어 : 논리적으로 집중된 단일 컨트롤러가 포워딩 테이블을 작성하고 이를 개별 라우터가 사용할 수 있도록 배포하는 경우를 말한다.
이 두 가지 경우에 사용되는 라우팅 알고리즘이 각각 다르다. 라우팅 알고리즘의 목표는 송신자부터 수신자의 라우터를 통과하는 가장 좋은 루트를 결정하는 것이다. 이 좋은 경로는 일반적으로 최소한의 비용을 소모하는 경로이지만 특별한 경우도 존재할 수 있다. 이 라우팅 알고리즘을 분류하는 방법에는 두 가지가 있다. 첫번째 분류는 알고리즘이 중앙 집중형인지 분산형인지다.
중앙 집중형 알고리즘은 네트워크 전체에 대한 완전한 정보를 가지고 최소 비용 경로를 계산하는 알고리즘이다. 이 알고리즘은 전체 링크 상태(비용 등)을 알고 있어야 하기 때문에 '링크 상태(link stated) 알고리즘'이라고도 한다. 분산 라우팅 알고리즘은 최소 비용 경로의 계산이 개별 라우터들에 의해 반복적이고 분산된 형식으로 수행된다. 이 알고리즘은 노드들이 전체 링크의 비용에 대한 정보를 가지고 있지 않고, 단지 이웃 링크들의 상태만을 알고 있을 뿐이다.
두번째로 알고리즘을 분류하는 방식은 정적 알고리즘과 동적 알고리즘이다. 정적 라우팅 알고리즘은 사람이 직접 링크 비용을 수정하거나 하는 수정을 통해 경로가 바뀌는 알고리즘이다. 동적 라우팅 알고리즘은 네트워크의 트래픽 부하나, 토폴로지의 변화같은 변화에 스스로 라우팅 경로를 바꾼다.
2. 링크 상태 알고리즘과 거리 벡터 알고리즘
1. 링크 상태 알고리즘
링크 상태 알고리즘은 모든 링크의 비용을 알고 있다. 이는 각 노두가 자신과 연결된 링크의 비용을 다른 노드로 브로드캐스트함으로서 가능하다. 대표적인 링크 상태 알고리즘은 다익스트라 알고리즘을 통해 수행된다. 다익스트라 알고리즘은 출발 노드에서 k개의 노드로 향하는 최소 비용 경로를 k번째의 반복을 통해 얻을 수 있다. 이 알고리즘은 출발 노드와 연결된 링크의 비용만을 파악한 상태에서 시작된다.(연결되지 않은 링크의 비용은 무한대로 설정한다) 그 후 비용이 최소인 링크로 연결된 노드를 출발지 노드와 같은 집합 N'에 넣는다. 집합 N'이 갱신된 후에는 다시 이웃 링크와의 비용을 계산한다. 이 과정에서 집합 N'이 갱신되기 전과 후의 링크 비용은 달라진다. 이렇게 k번의 알고리즘 수행을 마치고 나면 각각의 노드에서 다른 노드로 가는 최소비용경로가 형성된다. 이 알고리즘의 시간복잡도는 O(n^2)이다.
2. 거리 벡터 라우팅 알고리즘
거리 벡터 라우팅 알고리즘은 모든 링크의 비용을 알고 있는 링크 상태 알고리즘과 달리 모든 링크의 비용을 파악하지 않은 상태로 시작하는 반복적, 비동기적, 분산적 알고리즘이다. 각 노드는 이웃의 노드로부터 링크 비용에 관한 정보를 받고 계산을 수행하며, 수행 결과를 이웃 노드에게 전파한다는 점에서 분산적이며 이 계산이 더 이상 교환할 정보가 없을 때까지 반복된다는 점에서 반복적이다. 또 모든 노드가 정확히 맞물려 떨어질 필요가 없다는 점에서 비동기적이기도 하다. 거리 벡터 라우팅 알고리즘은 다음의 벨만-포드 식에 의해서 계산된 최소 비용을 계산한다
dx(y) = minv {c(x,v) +(dv)y}
이 공식은 x에서 y까지의 최소비용경로는 이웃 노드인 v와의 비용과 v와 y까지의 최소비용경로 중 최소값을 취한다는 의미이다. 이 공식은 재귀적이여서 한 노드가 자신의 거리 벡터를 이웃 노드들에게 보냄으로서 이웃 노드들이 자신의 거리 벡터를 수정하는 반복적인 작업을 통해 결국 전체 최소 비용 경로로 수렴하게 되는 과정을 유도한다.
위에서 살펴본 두 알고리즘을 비교해보자. 우선 두 알고리즘 모두 최소 비용 경로를 계산하는 알고리즘이다. 하지만 거리 벡터 알고리즘은 직접 연결된 링크의 비용만을 알고 있지만 링크 상태 알고리즘은 모든 링크의 비용을 파악해야 한다. 링크 상태 알고리즘은 어느 한 노드가 고장나거나 잘못된 정보를 전달해도 포워딩 테이블을 안정적으로 유지할 수 있지만, 거리 벡터 알고리즘은 위와 같은 상황에서 잘못된 결과가 전체로 확산되는 문제가 나타난다. 하지만 링크 상태 알고리즘이 라우팅 테이블을 수정하려면 전체 노드에게서 메세지를 받아야 하는데 비해 거리 벡터 알고리즘은 수정된 노드의 메시지만 반영하면 되기에 거리 벡터 알고리즘의 복잡성이 더 낮다고 볼 수 있다.
3. OSPF 알고리즘과 BGP 알고리즘
위의 라우팅 알고리즘에서 우리는 네트워크를 단순히 상호연결된 라우터들의 집합으로 가정했다. 하지만 실제 네트워크는 동일한 관리 제어 하에 있는 라우터의 그룹으로 구성되어 있다. 이 라우터들의 그룹은 '자율 시스템(autonomous system)'이라고 한다. 어떤 ISP는 네트워크를 여러 개의 AS로 나누기도 하고 하나의 거대한 AS를 구성해 관리,제어 하기도 한다. 이 AS 안에서 라우팅 경로를 찾는 프로토콜을 AS 내부 라우팅 프로토콜이라고 한다. 이 AS 내부 라우팅 프로토콜에 사용되는 프로토콜은 OSPF가 있다. OSPF는 링크 상태 알고리즘으로 각 라우터들은 전체 AS에 대한 링크 비용을 완전히 파악하고 있다. OSPF가 제공하는 서비스는 다음과 같다.
1. 인증을 통한 보안
2. 복수 동일 비용 경로
3. 유니캐스트와 멀티캐스트 라우팅의 통합 지원
4. 단일 AS 내에서의 계층 지원
위의 OSPF가 AS 내 라우팅 프로토콜이라면 AS 간의 라우팅 프로토콜도 필요할 것이다. 이 자율 시스템 간 라우팅 프로토콜은 BGP가 있다 BGP는 이웃한 AS로부터 접근 가능한 서브넷 접두부 정보를 얻어 이 서브넷 접두부로의 가장 좋은 경로를 결정한다. 이 최고의 경로는 AS-PATH와 NEXT-HOP이라는 두 가지 속성을 이용해 파악한다. AS-PATH응 알림 메시지가 통과한 노드를 기록하는 속성이고, NEXT-HOP은 AS-PATH를 시작하는 라우터 인터페이스의 IP 주소를 기록하는 속성이다. 이 BGP에 사용되는 단순한 알고리즘인 '뜨거운 감자(hot potato routing)'을 알아보자. 뜨거운 감자 알고리즘은 위의 NEXT-HOP과 AS-PATH 속성을 이용해 최적의 경로를 결정한다. 이 알고리즘에서는 바깥 AS의 경로는 신경쓰지 않고 우선 NEXT-HOP으로 가는 최선의 경로만을 계산한다. 감자가 너무 뜨겁기 때문에 되도록 빨리 다른 사람(AS)에게 넘겨주는 방식이라서 뜨거운 감자 알고리즘이라고 불린다.
4. 소프트웨어 정의 네트워크(SDN) 제어 평면
전 글에서 SDN의 패킷 포워딩 기능을 알아보았다. 이번 글에서는 SDN의 제어 평면에서 수행되는 기능, 즉 네트워크를 관리하는 장치 및 서비스의 설정,관리를 알아본다. 우선 SDN 구조의 특징은 다음과 같다.
1. 플로우 기반 포워딩
2. 데이터 평면과 제어 평면의 분리
3. 네트워크 제어 기능이 데이터 평면 스위치 외부에 존재
4. 프로그램이 가능한 네트워크
SDN은 네트워크의 완전한 분리를 의미한다. 이는 컴퓨터의 각각의 하드웨어들이 다른 제조사에서 만들어진 것처럼 네트워크의 컨트롤러, 데이터 평면 스위치, 제어 응용이 각기 다른 제조사에서 만들어진 분리된 개체라는 것이다. 크게 SDN은 SDN 컨트롤러와 SDN 네트워크 제어 응용으로 나누어지는데, SDN 컨트롤러는 통신 계층과 네트워크 전역 상태 관리 계층, 네트워크 제어 응용과의 인터페이스 3개의 계층으로 이루어져 있다. 이 SDN을 통해서 네트워크 관리자는 응용 제어 소프트웨어를 바꿈으로서 어떤 형태의 포워딩 방식으로 손쉽게 구현할 수 있다. 고전적인 라우터별 제어 평면 구조와는 대조적인 면이다.
5. ICMP와 SNMP
호스트와 라우터가 서로 간에 네트워크 계층 정보를 주고받기 위해 사용되는 프로토콜에 ICMP(internet control message protocol)'이 있다. ICMP가 보내는 대표적인 메시지 중 하나로 오류 보고가 있다. HTTP 연결을 수행할 때 '목적지 네트워크에 다다를 수 없음'이라는 메시지는 ICMP가 만든 것이다.
SNMP(simple network management protocol)은 네트워크 관리 프레임워크의 구성요소(관리 서버, 피관리 장치, 네트워크 관리 에이전트)를 이루고 있는 프로토콜이다. 이 프로토콜을 통해 위의 네트워크 관리 프레임워크들이 요청-응답 모드로 역할을 수행할 수 있다.
여기까지 우리는 네트워크 계층의 제어 평면, 즉 소프트웨어 정의 네트워킹과 라우터 경로 알고리즘, 네트워크 관리 프로토콜에 대하여 알아보았다. 이때까지 네트워크의 프로토콜 스택 5단계 중 애플리케이션, 트랜스포트, 네트워크 스택에 대하여 알아보았다. 앞으로도 이러한 지식을 바탕으로 네트워크에 대한 광범위한 내용을 내 것으로 만들도록 노력해야 겠다.
'Network' 카테고리의 다른 글
용어를 확실히 - IOPS란? (0) | 2019.12.24 |
---|---|
용어를 확실히 - stateful vs stateless (0) | 2019.12.24 |
컴퓨터 네트워크 4-1. 네트워크 계층 : 데이터 평면 (0) | 2019.12.14 |
컴퓨터 네트워크 3. 트랜스 포트 계층 (0) | 2019.12.12 |
컴퓨터 네트워크 2. 애플리케이션 계층 (0) | 2019.12.08 |