네트워크 - OpenFlow

2021-01-07

컴퓨터 네트워크를 공부하면서 정리를 한 내용들 입니다.

-참고 K-mooc 부산 대학교 유영환 교수님 : 컴퓨터 네트워크 강의


Components of SDN Controller

SDN controller이 하는 일은 스위치들로부터

link-state 정보, 호스트 정보 그리고 스위치 정보를 모아서

network graph를 만들고, 만들어진 network graph에서

라우팅 알고리즘을 적용해서 길을 찾습니다.

그리고 찾은 길을 flow table로 만들어서 스위치에 전달합니다.

그림의 아랫쪽을 보면 openflow 라는 것이 있습니다.

openflow는 하부에 있는 openflow 스위치

통신을 할 때 쓰는 프로토콜openflow가 되겠습니다.

OpenFlow

openflow는 스탠포드 대학교에서 처음 만들었습니다.

openflow를 만든 이유는 SDN의 이유와 마찬가지 입니다.

본인들이 생각한 라우팅 알고리즘들을

기존의 라우터나 이더넷 스위치에 넣어서 실험 해 볼 수 있는

스위치를 만들어 보고자 openflow 스위치를 만들었습니다.

Openflow 스위치이더넷 스위치를 기반으로 해서 동작을 합니다.

OpenFlow 스위치는 크게 세 가지로 나누어 지는데

1. flow table.

flow table은 컨트롤러가 전달 해 준 flow table을 저장합니다.

저장을 해서 각 노드들이 보내 온 데이터그램을

flow table에 따라서 어디로 전달 할 것인지를 결정을 합니다.

2. secure channel

Openflow가 컨트롤러가 주고 받는 데이터가

SSL(Socket Secure Layer) 또는 TLS(Transport Layer Secure) 서비스를

통해서 전달 하게끔 되어 있습니다.

3. OpenFlow protocol

컨트롤러와 스위치 사이에 주고 받는 데이터 순서 라던지

포맷 이라던지 이런 것을 결정합니다.

그래서 openflow라고 하면 openflow 스위치를 말하는 경우도 있고,

openflow 프로토콜을 말 하는 경우도 있는데

openflow 프로토콜은 스위치와 컨트롤러가 주고 받을 때 프로토콜,

커뮤니케이션 프로토콜을 뜻하고

이것을 지원하는 스위치를 openflow 스위치라고 합니다.

OpenFlow Protocol

그림에서 서버 그림은 OpenFlow 컨트롤러를 뜻합니다.

아래에 있는 것은 openflow 스위치를 뜻합니다.

그래서 컨트롤러에서 내려오는 정보를 가지고 flow table을 만들어 주면

그것을 스위치에 심어서 데이터를 전달하는 데 기본 정보로 사용합니다.

openflow 프로토콜은 컨트롤러와 스위치 사이에서 동작하는 프로토콜이고,

TCP 기반의 그리고 암호화 된 방식으로 전달 하는 경우가 많습니다.

그래서 SSL 또는 TLS를 기반으로 메시지를 주고 받게 되고,

여기서 주고 받는 openflow 메시지는 크게 세 개로

하나는 컨트롤러에서 스위치로 주는 것 입니다.

컨트롤러에서 스위치로 주는 것은 보통 컨트롤러가

query 메시지를 보내고 거기에 대한 응답을 받는 것이기 때문에

synchronous한 방식으로 동작합니다.

또 다른 하나는 스위치에서 컨트롤러로 주는 것 입니다.

그런데 반대로 스위치에서 컨트롤러로 가는 것은

스위치가 전달 할게 있으면 전달을 합니다.

언제 데이터가 올지 모르기 때문에 컨트롤러 입장에서는

Asynchronous한 메시지 전달입니다.

마지막으로 symmetric로 분류 된 명령어들이 있습니다.

이것은 누구라도 먼저 보낼 수 있습니다.

주로 쓰이는 때는 TCP 연결을 설립 하려고 할 때나

TCP 연결이 잘 되어 있는지 검사를 할 때 사용합니다.