(2) 사용자 및 시스템 요구사항 정의 ㅇ 요구사항 분석·정의·관리 체계 구축
§ USE CASE 분석
§ 사용자 요구사항 정의: 고객 식별 및 요구사항 도출
§ 요구사항 분석 및 요소기술 조사
§ 시스템 요구사항 정의
§ 요구사항 검토 및 확인
§ 시스템 요구사항 전달
§ 요구사항 추적성 유지
ㅇ 고객(11개 기관) 및 잠재적 고객(중소 벤더 및 통신사업자)을 위한 사용자 요구사항 도출 및 정의
§ NOX, FloodLight 등 오픈소스 기반 컨트롤러 설치 및 기능·성능 분석을 통해 벤치마 킹한 결과를 요구사항 정의에 활용
§ 스마트인터넷기술 과제협의회 및 SDN 사업협의회를 통한 사용자 요구사항의 지속적인 수렴 진행 중
ㅇ 시스템 개념모델 정의
§ 사용자 응용: 컨트롤러 코어 서브시스템의 제공 기능을 기반으로 사용자나 운용자에게 직접적인서비스를지원하는 서브시스템
§ 컨트롤러 코어: 중앙집중 방식의 SDN 구조에서 개방형 API를 통해 데이타플레인의 구 성과 트래픽의 전달 경로를 제어하는 서브시스템
§ 네트워크 공통응용: 컨트롤러 코어 서브시스템의 제공 기능을 기반으로 공통적인 네트 워킹 기능을 지원하는 서브시스템
§ 가상 인프라 통합관리: SDN 가상인프라에 대한 통합 관리 기능을 담당하는 서브시스템
§ 검증언어 및 검증도구: SDN 응용에 대해 요구된 속성들이 가용한 인프라 특성 및 설 정된 룰들과의 배치여부를 포함한 적합성을 검증하는 서브시스템
(그림 3-1) 시스템 개념모델 ㅇ 사용자 및 시스템 요구사항정의서 Ver. 1.0/1.1 완료
버전 작성일 변경 내용
분류 세부 분류(항목 수) 주요 요구사항
(3) - 컨트롤러 서버간 절체(<1000/<500/<200ms) 유지보수성
ㅇ ETRI 내부 연구사업 결과물 품질향상 표창장 수상(우수 요구사항정의서,‘14.01)
ㅇ 주요 연구 산출물 [기술문서]
§ 캐리어급 서비스인프라를 위한 SDN 핵심기술 개발: 요구사항 정의서 Ver. 1.0/1.1 (~‘13.11)
§ 사업 요구사항 동료검토 결과서 (‘13.11)
나. SDN 컨트롤러 플랫폼 개발
(1) 단일 도메인 SDN 컨트롤러 연구시제품(IRIS) 개발 및 오픈소스화 ㅇ SDN 컨트롤러 기반 플랫폼 요구사항서 완료
§ 사용자 요구사항 정의서 (사용자 요구사항서에 통합됨)
§ 시스템 요구사항 정의서 (시스템 요구사항서에 통합됨) ㅇ SDN 컨트롤러 기반 플랫폼 시스템설계서 완료
§ 시스템 요구사항을 토대로 서브시스템 식별
§ 서브시스템 간 인터페이스 정의 ((그림 3-1), ‘시스템 개념모델’참고)”
ㅇ SDN 컨트롤러 기반 플랫폼 서브시스템 상세설계서 완료
§ 서브시스템의 구체적인 동작방식을 기술
‑ 서브시스템 클래스 다이어그램
‑ 서브시스템 시퀀스 다이어그램
(그림 3-2) SDN 컨트롤러 기반 플랫폼 구조도
(그림 3-3) IRIS Core의 주요 클래스 다이어그램
(그림 3-4) IRIS 플랫폼 시퀀스 다이어그램 (구동 절차) ㅇ 컨트롤러 기반 플랫폼 (IRIS) 구현 및 시험 완료
§ 고성능 I/O 엔진 설계 및 구현
‑ Java NIO 기반 I/O 엔진: Floodlight (Netty) 대비 2.5배의 처리 성능
(그림 3-5) IRIS의 IO 엔진 구조도
‑ 성능 향상 요인
Floodlight IRIS I/O Engine Netty 기반
(낮은 성능/구현 복잡)
NIO 기반
(높은 성능/단순한 구조) 처리 성능 400~500M flows/sec 1000~1100M flows/sec
(그림 3-6) IRIS와 오픈소스 컨트롤러 성능 비교 분석 결과
‑ 성능 비교 환경
항목 세부사항
운영체제 Ubuntu 12.04 LTS (64bit architecture)
CPU Itel Xeon E5-2690 v2 @ 3.00GHz (20 physical cores)
RAM 64G
벤치마크 cbench 기반 벤치마크 쓰레드
IRIS 5 IO threads, 15 Worker threads Floodlight 20 Worker threads
Mul 18 switch handling threads, 1 app thread 호스트(MAC) 100,000 호스트
§ Floodlight과 호환되는 North-bound API
‑ Floodlight 모듈에 대한 이식성 보장을 통해 3rd party 개발자 지원
API 비고
/wm/core/controller/switches/json 모든 스위치 목록 및 정보 /wm/core/switch/{switchid}/aggregate/json 플로우 통계 정보 조회 /wm/core/switch/{switchid}/desc/json 스위치 상세 정보 조회 /wm/core/switch/{switchid}/port/json 스위치 포트 정보 조회 /wm/core/switch/{switchid}/features/json FEATURE_REPLY 조회
§ 개선된 Programming Model
‑ MVC 원칙에 따라 Model (OFModel)과 View (REST API)를 분리
‑ 데이터 모델의 구현과 구축 편의성 증대
‑ IRIS가 제공하는 기본 데이터베이스 (MongoDB)와 연동 편의
‑ REST API 구축용이 (callback 기반)
§ Floodlight UI의 단점을 개선하는 AngularJS 기반의 새로운 UI 구축
‑ 향상된 확장성 (신규 기능 추가 편의성 향상)
‑ 토폴로지 표시 방식 개선 (D3 기반의 자동 토폴로지 렌더링)
/wm/core/switch/{switchid}/flow/json FLOW_STATISTICS_REPLY 조회
/wm/core/health/json 컨트롤러 동작 상태 조회
/wm/core/module/{type}/json 모듈 목록 조회
/wm/core/memory/json 메모리 상태 조회
/wm/core/controller/database 데이터베이스 이름 조회
/wm/core/controller/database/drop/{dbname} 테이블 drop
/wm/core/controller/database/{dbname}/{collection}/insert 데이터 삽입
/wm/core/controller/database/{dbname}/{collection}/upsert 데이터 UPDATE+INSERT /wm/core/controller/database/{dbname}/{collection}/update 데이터 갱신
/wm/core/controller/database/{dbname}/{collection}/delete 데이터 삭제 /wm/core/controller/database/{dbname}/{collection}/retrieve/all 데이터 조회
/wm/core/controller/database/{dbname}/{collection}/retrieve 특정 컬렉션 데이터 조회 /wm/core/controller/database/{dbname}/{collection}/ensureindex 특정 컬렉션에 인덱스 생성 /wm/core/controller/database/{dbname}/{collection}/dropindex 인덱스 제거
/wm/core/controller/database/{dbname}/{collection}/getindex 인덱스 조회
/wm/device/all/json 모든 device 정보 조회
/wm/firewall/module/{op}/json firewall에 동작 지령
/wm/firewall/rules/json (GET) 모든 firewall 규칙 조회
/wm/firewall/rules/json (POST) 신규 firewall 규칙 생성
/wm/firewall/rules/json (DELETE) 기존 firewall 규칙 삭제
/wm/topology/links/json 모든 링크 조회
/wm/topology/switchclusters/json 스위치 클러스터 조회
(그림 3-7) IRIS UI 화면 (main)
(그림 3-8) IRIS UI 화면 (토폴로지)
§ OpenFlow 1.3.2 프로토콜 스택 구현 완료 (당초 계획 1.2)
‑ Python 기반의 OpenFlow 프로토콜 스택 생성기 (xen) 이용
‑ OpenFlow 1.3.2를 지원하도록 컨트롤러 기존 모듈 이식
ㅇ 오픈소스 공개 (http://openiris.etri.re.kr)
§ IRIS 플랫폼 확산 및 활성화를 위한 오픈소스 플랫폼 OpenIRIS 공개 (GitHub)
‑ JavaDoc, User Guide, Q&A Forum 등 다양한 형태의 자료 제공 ㅇ 주요 연구 산출물
[논문]
‑ 이병준 외, “IRIS: The OpenFlow-based Recursive SDN Controller”, ICACT 2014.
(Outstanding Paper Award)
‑ 서동희, 이병준, “Building Firewall over the Software-Defined Network Controller, ICACT 2014.
[프로그램]
‑ IRIS 컨트롤러 기반 플랫폼 시제품(IRIS) [설계서]
‑ IRIS 컨트롤러 서브시스템 기능설계서 v1.0
‑ IRIS 컨트롤러 서브시스템 상세설계서 v1.0
‑ IRIS State Manager module 상세설계서 v1.0
‑ IRIS Storagemanager module 상세설계서 v1.0
‑ IRIS Forwarding module 상세설계서 v1.0
‑ IRIS Device Manager module 상세설계서 v1.0
‑ IRIS Firewall module 상세설계서 v1.0
(2) OpenFlow 1.3.2 프로토콜 처리 기술 개발
ㅇ Python 기반의 OpenFlow 프로토콜 생성기 (xen) 개발
§ 설정 파일을 입력하여 Java 클래스/인터페이스 파일 자동 생성
§ 자동 생성된 라이브러리를 IRIS에서 정적 링크하여 사용 ㅇ 신규 OpenFlow 프로토콜 스택에 대한 적응성 향상
§ 수작업 프로그래밍 없이도 새로운 규격을 빠르게 지원 가능 ㅇ OpenFlow 1.0.1/1.3.2 호환성 계층 도입
§ 하나의 소스 코드로 OpenFlow 1.0.1/1.3.2를 동시에 지원하는 모듈 개발 가능 ㅇ 주요 연구 산출물
[프로그램]
‑ OpenFlowJ-IRIS 프로토콜 스택 자동 생성기 (xen)
(그림 3-9) 자동 생성되는 OpenFlow 스택 파일 및 호환성 계층 관계도
(그림 3-10) 자동 생성된 OFFlowMod 클래스 파일 소스 코드 (부분)
(3) 고확장성/고가용성 지원 SDN 분산 컨트롤러 구조 설계 및 핵심 모듈 개발
ㅇ 캐리어 급 네트워크에 요구되는 확장성/가용성을 담보하는 분산 컨트롤러 구조 설계
§ 분산 컨트롤러를 위한 장애 탐지 방안 정의
§ 분산 컨트롤러를 위한 부하 분산 구조 정의
§ 분산 컨트롤러를 위한 접속 관리 방안 정의
ㅇ 캐리어 급 네트워크에 요구되는 확장성/가용성을 담보하는 분산 컨트롤러 클러스터용 미들웨어 구조 설계 및 분산 DB 연동 지원 모듈 개발
§ 오픈플로 스위치와 HA 컨트롤러를 사용한 미들웨어 구조 설계 - 오픈플로 스위치를 사용한 부하 분산 구조
- 소프트웨어 기반 미들웨어가 갖는 성능 한계 극복 - SDN 장비와의 연결 관리 구조 정의
- 수평적 규모 확장성을 담보하는 컨트롤러 클러스터 확장 방안 (서버를 증설하면 클러스터 성능이 선형적으로 개선되도록 구성)
§ 분산 데이터베이스 연동 모듈 개발 (Storage Manager)
- 분산 컨트롤러 클러스터를 구성하는 서버 간 상태 공유를 처리하는 분산 데이터베이스와의 연동 모듈 개발
- IRIS 컨트롤러와의 연동 시험 완료 ㅇ 주요 연구 산출물
[특허]
‑ 이병준, 신지수 외, “OpenFlow 스위치를 사용한 서버 연결 방법”, (국내/국제),‘13.11 출원접수
‑ 신지수, 이병준 외, “SDN 기반 서비스 장애 복구 및 방법 및 시스템”, (국내/국제),‘13.11 출원접수
‑ 박세형, 이병준 외, “SDN 스위치에서 효율적인 플로우 테이블 관리 기법 및 장치”
(국내/국제),‘13.11 출원접수
(그림 3-11) 분산 컨트롤러 구조도
(그림 3-12) OpenFlow 스위치 기반의 HiSA 미들웨어 구성도
(4) Legacy 스위치용 SDN 에이전트 개발
ㅇ OpenFlow Agent 기능 요구사항 정의서 완료
§ OpenFlow Switch Specification 1.0 분석 완료
§ OF-Config 1.1 분석 완료
ㅇ OpenFlow Agent 프로토콜 모듈 개발
§ E6100 플랫폼에 OVS (Open vSwitch 2.0.0) 포팅
§ CPU : P2020, OS : Linux 2.6.35 환경
§ E6100 플랫폼
- 48포트 10GE 인터페이스 제공
- Layer 2 기능 지원 – VLAN, Bridge, LACP, STP/MSTP/RSTP/PVST 등
- IPv4 라우팅 및 멀티케스팅 지원 – RIP, ISIS, OSPF, BGP, IGMP, PIM-SM/SSM - IPv6 라우팅 및 멀티케스팅 지원 – RIPng, ISIS, OSPFv3, BGP4+, MLD, PIM-SM/SSM - CPU : P2020, Main Memory : 2GBytes, OS : Linux 2.6.35
(그림 3-13) E6100 플랫폼 ㅇ OpenFlow Agent Data Plane 모듈 개발
§ E6100 스위칭 칩셋을 이용한 Data Plane 모듈 개발
§ OpenFlow용 Hardware Flow entry group 생성
§ Controller와 연동하여 Hardware Flow Entry 생성/삭제 기능 구현
(그림 3-14) OF Agent 정합 구조
(5) 컨트롤러 성과물 시험검증 ㅇ ETRI Q-MARK / TTA 시험 검증
대분류 중분류 목표 시험 ID 시험명
SDN 컨트롤러
통합제어가능 SDN
도메인 수 1
IR-CN-01 토폴로지 조회
IR-CN-02 노드 추가/제거시 토폴로지 동기화 조회
IR-CN-03 방화벽 응용을 통한 트래픽 제어
초당처리
플로우/컨트롤러 3M/초 IR-CN-04 cbench 프로그램을 통한 플로우 처리율 확인 제어가능 스위치
수/컨트롤러 100 IR-CN-05 cbench 프로그램을 통한 서비스 가능 최대 스위치 수 확인
연동가능 분산
컨트롤러 수 1 IR-CN-06 IR-CN-01~IR-CN-05으로 대체 (1개의 컨트롤러를 이용한 네트워크 제어 시험)
§ 트리 토폴로지, 선형 토폴로지, cbench 벤치마크 환경에서 시험
§ Firewall을 비롯한 모든 핵심/응용 모듈에 대해 시험 완료
(그림 3-15) Firewall 규칙을 사용한 패킷 전송 차단 시험 ㅇ IRIS-OpenFlow 스위치 연동 시험
§ Mininet/OVS 기반의 SW 스위치 연동시험 (OpenFlow 1.0.1/1.3.2) - 선형(linear), 트리(tree) 토폴로지에 대한 Mininet 기반 시험 완료
§ NEC 스위치 기반의 HW 스위치 연동시험 (OpenFlow 1.0.0)
- 관리(청색)/제어(녹색)/전송(적색)을 위한 3개 네트워크 구성 후 시험 완료
(그림 3-16) NEC 스위치 연동 시험망 구성도
(표 3-6) NEC 스위치 연동 시험용 컨트롤러 및 장비 사양
시스템 사양
IRIS 컨트롤러 Ubuntu Linux 10.04.1 (Intel Xeon 2, 4 core 3Ghz) 단말(host) 1 Ubuntu Linux 10.04.1
단말(host) 2 Ubuntu Linux 10.04.1 nec 스위치 1 NEC PF5248
nec 스위치 2 NEC PF5248 nec 스위치 3 NEC PF5248
§ 시험 항목
- IRIS Firewall 응용 모듈을 통한 네트워크 제어 시험 완료
- IRIS Static Flow Entry Pusher 응용 모듈을 통한 네트워크 제어 시험 완료 - 상기 환경에서 IRIS 연동시 NEC 스위치의 실질 성능 확인:
TCP 전송 성능: 최대 931Mbits/sec (1G port) UDP 전송 성능: 최대 812Mbits/sec (1G port) ㅇ IRIS – E6100 OF 연동 시험
§ 주요 시험항목
- IRIS controller와 connection setup 시험 - Packet-In 메시지에 의한 Flow add 시험 - Idle time 에 의한 Flow remove 시험
(그림 3-17) Idle timeout 5초인 Flow entry 생성 및 5초 후 삭제
ㅇ 주요 연구 산출물
§ 1차년도 R&D 성과물 시험·검증 시험절차서 Ver. 1.0/1.1/1.2/1.3 (‘13.10 ~ ’14.01)
§ 1차년도 R&D 성과물 시험·검증 시험결과서 Ver. 1.0/1.1/1.2 (‘13.12 ~ ’14.02)
§ 1차년도 R&D 성과물 시험·검증 시험결과서 Ver. 1.0/1.1/1.2 (‘13.12 ~ ’14.02)