[네트워크] 5-3. SDN

kkado·2023년 6월 8일
0

네트워크

목록 보기
29/49
post-thumbnail

⚠️ 들어가기 앞서
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터망 과목을 공부하며 정리한 글입니다.


라우터의 구조, 라우팅 테이블 등에 대해서 다룰 때 SDN (Software Defined Network) 에 대해서 언급한 바 있다. 이번 글에서 좀 더 자세히 다루어 보고자 한다.

1. Per-router control Plane

먼저 SDN과 대비되는 개념인 Per-router control plane 구조부터 살펴보자. 이전에 알아본 구조가 여기 해당한다.

각각의 라우터는 Control Plane과 Data Plane이 존재하고, 라우팅 알고리즘을 통해 라우팅 테이블을 구성하여 forwarding을 수행한다.

각 라우터들에 존재하는 라우팅 알고리즘들이 서로 정보를 주고받는다. 한 라우터는 이웃하는 라우터로부터 각 경로의 혼잡 여부 등의 정보를 받아서 최적의 경로를 각 라우터 내에서 각각 계산한다.

그러나 시간이 지나 데이터 전송 기술이 발전함에 따라 control plane이 굉장히 복잡해지게 되었다. 장비의 성능이 향상됨에 따라 가격 또한 같이 상승하게 되었다... 이와 같은 라우터 구조를 개선한 방식이 SDN이다.

2. SDN

SDN(Software Defined Network) 방식은 라우터의 control plane과 data plane을 서로 분리시키고, controller를 중앙화시킨 개념이다.

라우터의 control plane 부분에서 라우팅 알고리즘을 통해 최적의 경로를 계산하고, 계산된 경로에 따라 data plane 부분에서 forwarding을 수행하는 per-router control plane 방식과는 다르게, 최적 경로를 계산하는 controller 부분을 하나로 집중시킨 개념이다.

아래 그림을 보면 이해가 쉽다.

기존에는 각각의 라우터마다 제어부 (control plane)이 존재했으나 이를 하나의 제어부에서 통합하여 관리하도록 하고 각 라우터는 전송 역할 (data plane)만 수행한다.

그러나 SDN에서는 접근 가능한 컴퓨터 장치로 제어 영역이 분리되면서, 논리로 네트워크를 관리하고 제어할 수 있는 애플리케이션으로 네트워크 서비스를 관리할 수 있다.

쉽게 말해 사용자가 소프트웨어로 네트워크를 제어하는 기술이다.

SDN의 특징이자 장점에는 다음과 같은 것들이 있다.

  • 중앙 집중식 관리 : 네트워크 제어 로직을 중앙 집중화하여 유연성과 적응성이 뛰어나다. 네트워크를 쉽게 구성 및 제어할 수 있다.
  • 프로그래밍 가능 : 네트워크 기능을 직접 프로그래밍하여 트래픽 및 리소스 할당을 최적화할 수 있다.
  • 개방적 연결성 : 하드웨어와 소프트웨어를 분리하므로, 네트워크 장비의 제조사 및 종류에 구애받지 않기 때문에 다양성 측면에서 훨씬 빠른 진보가 가능하다.


Traditional Routing의 Traffic engineering

기존의 방식은 최적 경로를 설정함에 있어 여러 애로사항이 발생한다.

#1

최단 거리 알고리즘을 통해 찾은 경로가 아닌, 네트워크 관리자가 임의로 다른 경로를 지정하고 싶을 때 링크 가중치 정보를 재지정해서 라우팅 알고리즘을 통해 재연산 작업을 거쳐야 한다.

#2

또한, 항상 최적의 경로만을 찾기 때문에 트래픽의 로드 밸런싱이 불가능하다.

예를 들어 위의 그림과 같이 경로 정보가 있을 때 u에서 나가는 트래픽을 v와 x에 각각 분산시키고 싶은데 기존의 최단 거리 알고리즘을 통하면 항상 최적의 경로로만 라우팅하게 된다. 또는 새로운 라우팅 알고리즘을 고안해야 한다.

그러나, 네트워크를 구성하는 routing application이 프로그래밍 가능해지게 되면 여러 조건에 따라 다양한 경로를 선택할 수 있고 따라서 더 효율적인 네트워크 구축이 가능하다.

SDN의 구조

SDN 구조는 크게 세 가지 영역으로 구분할 수 있다.

Data plane switch

  • 소프트웨어를 통해 구현된 라우팅 방법에 따라 generalized forwarding을 수행한다.
  • SDN 컨트롤러와 통신하기 위한 API가 존재하며 대표적인 예시로는 Openflow가 있다.

SDN controller

  • 전체 네트워크를 제어하는 운영 체제 같은 요소이다.
  • 네트워크 어플리케이션과 통신하는 northbound API가 있고, data plane switch들과 통신하는 southbound API가 있다.
  • 성능, 확장성 등의 개선을 위해 분산 시스템 형태로 구현된다.

network control application

  • control plane의 두뇌 같은 존재로, 어떻게 동작할 것인지 제어하는 기능을 실질적으로 구현한다.
  • SDN controller에 의해 API를 제공 받는다.

OpenFlow protocol

오픈플로우란 data plane과 control plane 사이를 이어주는 인터페이스이다. 메시지 교환에는 TCP가 사용되며 openflow 메시지에는 controller to switch, switch to controller 클래스가 있다. (symmetric 클래스도 있으나 생략)

controller to switch message

컨트롤러에서 스위치로, 즉 위에서 아래로 보내는 메시지이다.

  • feature : switch의 상태에 대해 질의
  • configure : switch의 파라미터 확인 또는 설정
  • modify-state : flow entry를 추가하거나 삭제 또는 수정
  • packet-out : 스위치의 특정한 포트에서 패킷을 내보낼 때 사용

switch to controller message

스위치에서 컨트롤러로 보내는 메시지이다.

  • packet-in : 패킷을 컨트롤러로 보낼 때 사용
  • flow-removed : table entry가 삭제되었음을 알림
  • port status : 포트의 상태 변화를 알림

SDN 동작 과정 예시

1) s1 스위치가 openflow를 통해 SDN controller에게 연결 실패 사실을 알린다.
2) SDN controller는 openflow 메시지를 받고 link status를 수정한다.
3) link state가 수정되었으므로 다익스트라 알고리즘을 호출한다.
4) 다익스트라 알고리즘을 통해 새 경로를 계산한다.
5) 계산한 경로를 기반으로 새 flow table을 생성한다.
6) controller가 openflow를 통해 스위치들에 새 table을 install 한다.


profile
베이비 게임 개발자

0개의 댓글