300x250

OpenFlow version 1.3 tutorial

1. Setup
SDNHUB VM(http://sdnhub.org/tutorials/sdn-tutorial-vm/)을 다운로드 하고 VirtualboxVMware에서 돌린다.


2. Quick start

아래 명령어를 터미널에 입력하여 Mininet을 실행한다. 네트워크 에뮬레이션 환경이며 1개의 스위치에 3개의 호스트를 만들어낸다.
sudo mn topo single,3 mac controller remote switch ovsk,protocols=OpenFlow13

VM안에 있는 와이어샤크 1.11.3OpenFlow 1.0, 1.1, 1.2, 1.3, 1.4 메시지를 분석할 수 있다. 와이어샤크를 시작하기 위해 다음을 입력하고 오픈 플로우 메시지를 보자.
sudo wireshark &

다음으로 RYU 컨트롤러를 시작한다. ryu가 설치된 폴더는 /home/ubuntu/ryu 이고 아래 명령어는 OpenFlow Protocol HandlerSimple 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.3negotiated 되는걸 볼 수 있다.

 

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_REQUESTrequest 포트로 보낸다.


 
스위치는 살아있는 포트들의 PORT_DESCRIPTION으로 응답한다. OF 1.0에서는 포트 descriptionsFEATURE_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/

반응형

+ Recent posts