Suhwanc

본 내용은 Computer networking : a top-down approach 책을 바탕으로 정리하였습니다.

 

Index

  • 1. SDN
  • 2. OpenFlow

 

1. SDN 개요

 

SDN은 software defined network의 약자로 기존에 자유롭게 활동하던 라우터들을 한데 묶어 중앙 집중형으로 컨트롤하게 하는 네트워크 가상화 접근 방식이다.

SDN은 그전에 network layer에서 배운 컨트롤 플레인과 데이터 플레인을 분리하고,

물리적 장비와 구분되는 소프트웨어 프로그래밍 가능한 인프라를 생성하면서 구현된다.

 

1.1 왜 중앙 집중형 컨트롤 플레인일까?

 

중앙 집중 시, 네트워크를 관리하기 쉬워지고, 트래픽 흐름이 매우 유연해진다.

예시로, 기존 상태인 경우 한쪽 경로가 빠르기 때문에 모두 그쪽으로 몰려 트래픽이 높아지지만,

중앙 집중형 컨트롤은 이를 파악해 다른 경로를 유도해 트래픽을 분산시키는 역할을 해준다.

 

추가로 OpenFlow API를 통해 "프로그래밍"된 라우터들을 이용한다.

 

1.2 그림으로 살펴보는 SDN

 

위 그림은 SDN의 특성을 그대로 보여주는 예시이다.

 

  • 1. 각 라우터들은 flow table을 가지고 있다.
  • 2. 컨트롤 플레인과 데이터 플레인을 분리하였다.
  • 3. 컨트롤 플레인은 데이터 플레인의 스위치들로하여금 기능들을 보낸다.
  • 4. 컨트롤 플레인에는 이미 존재하는 여러 애플리케이션들을 활용한다.

Remote Controller는 local flow table을 만들어 데이터 플레인에 있는 라우터들에게 분배한다.

 

 

1.3 SDN 3계층

 

SDN 관점에서 네트워크는 3개의 계층으로 분류될 수 있다.

아까 컨트롤과 데이터 플레인으로 나눈 것뿐만 아니라 컨트롤에서 다시 2개로 나뉜 것이다.

 

1) network-control apps

컨트롤의 중추 역할을 하며, SDN 컨트롤러에서 제공받은 API와 여러 서비스들을 이용해 제어 기능을 구현한다.

내부에 있는 app들은 분산되어 필요에 따라 쓰인다.

 

2) SDN controller (network OS에 해당)

위에 있는 network-control apps과 밑에 있는 데이터 플레인의 스위치들과 상호작용한다.

이들은 네트워크 상태 정보를 모두 가지고 있기 때문에 성능을 위한 분산 시스템, 문제에 대해 견디는 능력 등을 구현한다.

 

3) Data plane switches

이들은 이미 위에 컨트롤 장치들이 존재하기 때문에 단순히 포워딩만 하는 기능을 한다.

(flow table도 위에서 내려받기 때문에 밥숟가락만 들면 된다!)

 

추가!

이들은 중앙 집중형이지만 한 곳에 있는 건 아니고, 각 컨트롤러에 복사되어 나누어져 있다!

 

 

2. OpenFlow

OpenFlow protocol은 앞서 설명한 데이터 플레인과 컨트롤 플레인 사이의 프로토콜이다.

 

OpenFlow는 SDN을 구현하기 위한 기술 중 하나로, 컨트롤러와 스위치 사이에서 어떻게 동작하는지를

정의해 놓은 프로토콜이며 이를 이용해 각 플레인들을 구현하게 된다.

 

2.1 OpenFlow 메시지

 

  • 컨트롤 -> 스위치 메시지
  • 스위치 -> 컨트롤 메시지
  • 예외 메시지

1) 컨트롤 to 스위치 메시지

  • features : 컨트롤러는 스위치의 기능들과 응답에 대해 질의한다.
  • configure : 컨트롤러는 스위치의 기본 파라미터들을 세팅한다.
  • modify-state : 플로우 테이블을 추가, 삭제, 수정한다.
  • packet-out : 컨트롤러가 스위치로 패킷을 바로 보낼 수 있다.

 

2) 스위치 to 컨트롤 메시지

  • packet-in : 패킷을 컨트롤러에게 보낸다.
  • flow-removed : 플로우 테이블 목록을 스위치에서 삭제 가능하다.
  • port status : 포트의 변화(망가졌다거나 하는 것)를 컨트롤러에게 알린다.

간단히 요약하자면 openflow는 스위치와 컨트롤러로 구성되며

스위치 내부에는 플로우 테이블이 존재하여, 패킷에 대한 정보를 담는다.

만약 테이블 내에 패킷 정보가 없다면 컨트롤러에 요청하는 등

이 둘은 마치 control, data plane과 같이 상호작용한다.

 

 

2.2 flow table 구성

 

flow table은 rule, action, stats 으로 이루어진다.

 

  • 1. rule : 스위치 포트, 출발지와 목적지 정보들이 들어간다.
  • 2. Action : 여러 포트들 가운데 특정 포트로 포워딩, 캡슐화, drop, 경로에 따른 패킷 전달 등의 정보가 들어간다.
  • 3. stats : 패킷과 카운터 정보가 들어가 flow table에 등록된 순간부터 시간을 측정한다.

'Computer Network' 카테고리의 다른 글

14. 스위치 근거리 네트워크 : LANs  (0) 2020.06.16
13. Link layer  (0) 2020.06.15
11. 인터넷에서의 라우팅  (1) 2020.06.14
10. 라우팅 알고리즘  (2) 2020.06.09
9. DHCP, NAT, IPv6  (0) 2020.06.09