네트워크 - OpenFlow
컴퓨터 네트워크를 공부하면서 정리를 한 내용들 입니다.
-참고 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 연결이 잘 되어 있는지 검사를 할 때 사용합니다.