OpenFlow version 1.3 tutorial
1. Setup
SDNHUB VM(http://sdnhub.org/tutorials/sdn-tutorial-vm/)을 다운로드 하고 Virtualbox나 VMware에서 돌린다.
2. Quick start
아래 명령어를 터미널에 입력하여 Mininet을 실행한다. 네트워크 에뮬레이션 환경이며 1개의 스위치에 3개의 호스트를 만들어낸다.
sudo mn —topo single,3 —mac —controller remote —switch ovsk,protocols=OpenFlow13
VM안에 있는 와이어샤크 1.11.3은 OpenFlow 1.0, 1.1, 1.2, 1.3, 1.4 메시지를 분석할 수 있다. 와이어샤크를 시작하기 위해 다음을 입력하고 오픈 플로우 메시지를 보자.
sudo wireshark &
다음으로 RYU 컨트롤러를 시작한다. ryu가 설치된 폴더는 /home/ubuntu/ryu 이고 아래 명령어는 OpenFlow Protocol Handler와 Simple Switch 1.3 애플리케이션을 초기화 한뒤 컨트롤러를 시작시킨다.
cd /home/ubuntu/ryu && ./bin/ryu-manager —verbose ryu/app/simple_switch_13.py
다음으로 mininet 토폴로지에 호스트가 있는지 체크하는 ping 이다.
mininet> h1 ping h3
당신은 진행중인 플로우를 다음 명령어를 통해 리스트화 시킬 수 있다.
sudo ovs-ofctl dump-flows s1 –O OpenFlow13
3. Understanding OpenFlow Messages
이전 섹션에서 스위치 애플리케이션의 설정에 대해 배웠으니, 컨트롤러와 스위치간에 오픈플로우 메시지 교환에 대해 더 들어가 보자.
연결 설정
스위치는 컨트롤러와의 연결을 위해 스탠다드 TCP를 보낸다. OpenFlow 연결이 성립됐을 때, 각 엔티티는 본인이 지원하는 가장높은 오픈플로우 프로토콜 버전을 프로토콜 버전셋과 함께 OFPT_HELLO 메시지를 보내야한다. 아래 그림에서 OpenFlow 버전 1.3이 negotiated 되는걸 볼 수 있다.
Feature Request – Reply
성공적으로 세션이 맺어진 후에, 컨트롤러는 OFPT_FEATURES_REQUEST 메시지를 보낸다. 이 메시지는 오픈플로우 헤더만을 포함하고 있으며 body는 포함하지 않는다.
스위치는 OPFPT_FEATURES_REPLY 메시지를 응답한다. Feature reply 메시지의 일부분으로 Datapath ID와 스위치 허용량을 보낸다.
구성 설정
다음으로, 컨트롤러는 OFPT_GSET_CONFIG 메시지를 스위치로 보낸다. 이 메시지에는 플래그셋과 datapath가 컨트롤러에게 보낸 패킷의 최대 바이트를 포함하고 있다.
멀티파트 리퀘스트 – 리플라이
컨트롤러는 OFPT_MULTIPART_REQUEST 메시지를 이용하여 데이터패스로부터 상태를 요청한다. 이 메시지 타입은 이 메시지가 포함하는 다양한 상태들(FLOW/TABLE/PORT/QUEUE/METER etc) 또는 특징들(METER_CONFIG/TABLE_FEATURES/PORT_DESC etc)에 의해 처리된다. simple_switch_13.py에서는 RYU가 내부적으로 MULTIPART_REQUEST를 request 포트로 보낸다.
스위치는 살아있는 포트들의 PORT_DESCRIPTION으로 응답한다. OF 1.0에서는 포트 descriptions은 FEATURE_REPLY 메시지의 일부를 리턴한다. 이것은 부분적으로 OF 1.3에서 MULTIPART_*로 처리된다.
FLOW Mod
플로우들은 컨트롤러에서 주도적으로(TableMissFlow와 같은 pre-install flows) 또는 수동적(메세지들속 패킷의 반응)으로 보내질 수 있다. 플로우 테이블 수정 메시지는 다음의 타입을 가질 수 있다.(OFPCFC_ADD, OFPFC_DELETE, OFPFC_DELETE_STRICT, OFPFC_MODIFY, OFPFC_MODIFY_STRICT)
다음의 경우에 컨트롤러는 새로운 플로우를 설치하고 OF1.0 파라미터로부터 떨어져서 준다. 각각의 파라미터들은 1.3에 명시되어 있다.
스위치는 일반적으로 FLOW_MOD 메시지를 위한 알림을 하지 않는다. 그러나 FLOW_MOD request에서의 다른 에러들은 OFPET_FLOW_MOD_FAILED로 응답되어 질 것이다.
Set Async Configuration Message
비동기 메시지는 스위치에서 컨트롤러로 보내진다. 메시지들은 OpenFlow 프로토콜을 지원하며, “Packet-Ins, Flow-Removed, Port-Status or Error”를 포함한다. 스위치가 컨트롤러에게 연결될 때, 컨트롤러는 메시지의 타입을 셋팅 할 수 있고 그 메시지의 타입은 OpenFlow 채널을 통해 받게 될 것이다.
위의 그림은 컨트롤러가 보낸 비동기 config 메시지를 보여준다. flags set에 의존적이며, 다양한 비동기 메시지들이 스위치로부터 수신될 수 있다.
source : http://sdnhub.org/tutorials/openflow-1-3/
'정보보안 > 네트워크보안' 카테고리의 다른 글
Assignment #4 - SDN Application (0) | 2015.05.27 |
---|---|
소프트웨어 정의 네트워킹의 네트워크 보안 (Network Security in the New Paradigm of Software Defined Networking( SDN )) #2 (0) | 2015.05.26 |
소프트웨어 정의 네트워킹의 네트워크 보안 (Network Security in the New Paradigm of Software Defined Networking( SDN )) (0) | 2015.05.21 |
Assignment #3 Build a botnet (0) | 2015.05.17 |
Assignment #3 - Build a botnet (0) | 2015.05.12 |