블로거 워누입니다! 

저번 포스팅에서 mininet을 활용해서 가상 네트워크를 구성하고, flow entry를 추가도 해보고 삭제도 해 보았습니다. 그럼 이제 실제로 OpenFlow Controller를 설치해서 간단하게라도 테스트를 진행해 보아야겠죠? 

.

근데 그걸 하기전에..! 

오늘 포스팅에서는 OpenFlow Controller가 어떤 역할을 하는지, 그리고 어떤 종류가 있는지 알아봅시다! 

.

혹시 제가 맨 처음 포스팅에서 SDN에서 네트워크의 데이터 평면(data plane)과 제어 평면(control plane)을 분리하고 이 사이에 표준화된 인터페이스를 제공하며, 네트워크 운용자가 여러 상황에 맞추어 제어 평면을 프로그래밍하여 데이터 평면에서 이루어지는 통신 기능을 다양한 방식으로 제어할 수 있다고 한 거 기억하시나요? 컨트롤러가 하는 역할이 바로 이것입니다! 조금 간략하게 정리해드리자면, OpenFlow Controller는 OpenFlow Switch에게 프로그래밍 인터페이스를 제공합니다.이 프로그래밍 인터페이스를 이용해 제어와 관리 업무를 수행하고 새로운 기능을 제공하는 네트워크 어플리케이션을 작성할 수 있습니다. 그리고 SDN과 OpenFlow의 제어 평면은 논리적으로 집중되어 있고, 네트워크 어플리케이션은 네트워크가 마치 단일 시스템인 것처럼 작성됩니다!

.

아래 그림도 참고하시면 될 거 같아요. 역시 SDN 첫 포스팅에서 보여드린 그림인데요.

이 그림이 컨트롤러의 역할을 잘 설명할 수 있는 그림인거 같네요!

.

[원본 출처 : http://terms.naver.com/entry.nhn?docId=2851199&cid=56756&categoryId=56756]

.

위 그림이 영어로 되어있지만 쉽게 풀어보자면 ,

1계층은 네트워크(장비) 인프라 계층으로 네트워크 장비들이 있고,

2계층은 제어 계층으로 SDN 제어 소프트웨어가 있네요.

3계층은 응용 계층으로 어플리케이션들이 있습니다. 

.

1계층과 2계층 사이에서 데이터 평면 제어 인터페이스를 주고 받고 

2계층과 3계층 사이에 노스바운드 API를 주고 받는 것을 알 수 있습니다. 

.

반응형 제어 모델의 경우 OpenFlow Switch는 새로운 패킷 플로우가 OpenFlow Switch에 도착과 같은 결정이 필요한 상황이 발생하면 이걸 OpenFlow Controller에게 문의합니다.

.

플로우 기반 제어 모델의 경우에는 각 플로우의 첫번째 패킷이 포워드나 폐기 등의 결정을 하려면 컨트롤러에게 전달되야 하므로 해당 플로우에 속한 나머지 트래픽들은 스위칭 하드웨어 내에서 약간의 성능지연이 발생할 수밖에 없습니다. 대부분의 경우에는 첫 패킷의 지연을 무시할 수 있는 수준이지만 만약, 중앙의 OpenFlow Controller가 지리적으로 멀리 떨어져있거나 대부분의 플로우가 단일 패킷 플로우같이 일시적인 경우에는 문제가 됩니다. 대안으로 사전적 접근방법에서 OpenFlow는 정책 룰을 Controller가 Switch에게 밀어넣는 것이 가능합니다. 

.

.

위에 너무 구구절절하게 썻지만 '대충 이런느낌이구나...' 이렇게 넘어가셔도 될거에요! OpenFlow Controller가 어떻게 동작하는지 실제로 해봐야 '아! 그렇구나!!' 하는 느낌이 오겠죠? 

이제 어떤 OpenFlow Controller를 써야 할지 종류를 한번 보겠습니다.

.

 이름

언어 

플랫폼 

라이센스 

제작자/사 

비고 

 OpenFlow

Reference

Linux 

OpenFlow

License 

Stanford/

Nicira 

Not designed for extensibility 

 NOX

Python, C++ 

Linux 

GPL 

Nicira 

actively developed 

POX 

Python 

Any 

GPL

 

POX is NOX's younger sibling.

Beacon

Java 

Win, Mac,

Linux,

Android 

GPL(core), Foss Licenses for your code

David Erickson

(stanford)

Web UI framework,

regression test framework 

 Floodlight

Java 

Any 

 Apache 

BigSwitch,

based on Beacon 

Rest API

Open community 

Trema 

Ruby, C 

Linux 

GPL 

NEC 

regression test Framework supports OpenFlow 1.3 

 Maestro

Java 

Win, Mac, Linux 

LGPL 

Zheng Cai

(Rice) 

Multi-threading and targets researchers. 

Opendaylight 

Java 

Linux, and others 

EPL 

 

OpenDaylight is a Collaborative, open source project to advance SDN.

 FlowVisor

 

 

 

On.lab 

"slices" network resources 

 RouteFlow 

C++, Python 

Linux 

Apache 

CPqD(Brazil) 

virtual IP routing as a service. 


<OpenFlow Controller List>

.

종류가 많죠? 이 많은 걸 다 할 수는 없을거 같아요.. 그래서 다음 포스팅에 쓸 컨트롤러를 결정을 해야 하는데.. 익숙한 언어와 운영체제를 쓰는게 좋을거 같네요! 

저는 주로 Java를 활용하니 Beacon이나 Maestro, Opendaylight 셋중에 하나를 골라 프로젝트를 진행해 보도록 하겠습니다. 

.

오늘 포스팅은 여기까지 할 겁니다! 다음 포스팅에서는 저 3개 controller중 하나를 골라서 설치하는 것부터 간단한 운용까지 하는 방법을 담아보도록 노력하겠습니다~ 

그럼 20000!


+ Recent posts