KR101519543B1 - 소프트웨어 정의 네트워크에서 제어 장치 및 그 동작 방법 - Google Patents

소프트웨어 정의 네트워크에서 제어 장치 및 그 동작 방법 Download PDF

Info

Publication number
KR101519543B1
KR101519543B1 KR1020140003296A KR20140003296A KR101519543B1 KR 101519543 B1 KR101519543 B1 KR 101519543B1 KR 1020140003296 A KR1020140003296 A KR 1020140003296A KR 20140003296 A KR20140003296 A KR 20140003296A KR 101519543 B1 KR101519543 B1 KR 101519543B1
Authority
KR
South Korea
Prior art keywords
application program
event
management module
determined
authority
Prior art date
Application number
KR1020140003296A
Other languages
English (en)
Inventor
정재웅
신승원
송용주
Original Assignee
아토리서치(주)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아토리서치(주) filed Critical 아토리서치(주)
Priority to KR1020140003296A priority Critical patent/KR101519543B1/ko
Application granted granted Critical
Publication of KR101519543B1 publication Critical patent/KR101519543B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

복수의 스위치를 포함하는 소프트웨어 정의 네트워크를 관리하는 제어 장치는 적어도 하나의 응용 프로그램을 인증하는 보안 관리 모듈; 및 상기 적어도 하나의 응용 프로그램 중에서 인증된 응용 프로그램을 제1 프로세스에서 실행하고, 인증 실패된 응용 프로그램을 제2 프로세스에서 실행하는 응용 프로그램 관리 모듈을 포함한다. 상기 응용 프로그램 관리 모듈은 상기 제1 프로세스에서 실행되고, 상기 제1 프로세스는 상기 제2 프로세스와 다르다.

Description

소프트웨어 정의 네트워크에서 제어 장치 및 그 동작 방법{CONTROL APPARATUS AND METHOD THEREOF IN SOFTWARE DEFINED NETWORK}
본 발명은 소프트웨어 정의 네트워크(Software Defined Network)에서 제어 장치 및 그 동작 방법에 관한 것이다.
2008년 발표된 소프트웨어 정의 네트워킹 기술의 등장은 최근 네트워크 구조를 바꾸고 있다. 소프트웨어 정의 네트워크 기술은, 기본적으로, 복잡한 제어 플레인(control plane)의 기능을 데이터 플레인(data plane)과 분리하여, 제어 플레인 의 복잡한 기능을 소프트웨어적으로 처리하고, 데이터 플레인은 단순한 네트워크 패킷의 전달, 무시, 변경 등의 기능만을 수행하도록 하는데 있다. 이 경우, 복잡한 하드웨어의 제약없이 제어 플레인의 도움을 통해 소프트웨어적으로 새로운 네트워크의 기능이 개발될 수 있으며, 동시에 이전 네트워크 구조에서 하기 어려웠던 다양한 시도가 가능하게 되었다.
예를 들어, 클라우드 네트워크와 같은 환경에서, 각 네트워크 스위치 혹은 라우터의 기능을 다이나믹하게 설정하여, 에너지 소비를 줄일 수 있으며, 엔터프라이즈 급의 환경에서는 각 스위치나 라우터에 원하는 접근 제어 방식을 구현할 수 있다. 따라서, 이 방식을 이용하여 기존의 네트워크에서 사용되는 장비의 수를 줄일 수 있으며, 동시에 장비 관리 비용 역시 줄일 수 있다. 또한, 새로운 기능을 자유자재로 실험적으로 개발하여 테스트할 수 있다.
일반 네트워크는 관리 편의를 위하여 간단한 구조로 연결된 스위치들을 포함하는 것과는 달리 소프트웨어 정의 네트워크 내의 스위치들은 간단한 구조를 가질 필요가 없다. 이는, 제어 장치가 고속 컴퓨팅에 의해 스위치들의 플로우 테이블을 구할 수 있기 때문이다.
이와 같이, 소프트웨어 정의 네트워크에서 스위치는 제어 장치의 지시를 따를 뿐이고, 소프트웨어 정의 네트워크의 모든 기능은 제어 장치에 의해 구현될 수 있다. 이처럼 제어 장치가 소프트웨어 정의 네트워크의 구현에 큰 역할을 하므로, 제어 장치에 고성능, 안정성, 보안성을 제공하기 위한 방안이 요구되고 있다.
본 발명이 해결하고자 하는 기술적 과제는 소프트웨어 정의 네트워크에서 고성능, 안정성, 보안성을 가지는 제어 장치를 제공하는 것이다.
실시예에서, 복수의 스위치를 포함하는 소프트웨어 정의 네트워크를 관리하는 제어 장치는 적어도 하나의 응용 프로그램을 인증하는 보안 관리 모듈; 및 상기 적어도 하나의 응용 프로그램 중에서 인증된 응용 프로그램을 제1 프로세스에서 실행하고, 인증 실패된 응용 프로그램을 제2 프로세스에서 실행하는 응용 프로그램 관리 모듈을 포함한다. 상기 응용 프로그램 관리 모듈은 상기 제1 프로세스에서 실행되고, 상기 제1 프로세스는 상기 제2 프로세스와 다르다.
제어 장치는 복수의 이벤트를 큐잉하는 이벤트 큐; 및 이벤트 타입에 할당된 우선 순위에 기초하여, 상기 복수의 이벤트 중에서 우선적으로 처리할 이벤트를 결정하고, 상기 결정된 이벤트를 처리할 응용 프로그램에 상기 결정된 이벤트를 분배하는 이벤트 분배 모듈을 더 포함할 수 있다.
실시예에서, 제어 장치는 고성능, 안정성, 보안성을 가질 수 있다.
도 1은 본 발명의 일 실시예에 따른 소프트웨어 정의 네트워크의 기본적인 구조를 보여주는 블록도이다.
도 2는 본 발명의 실시예에 따른 제어 장치의 구조를 보여주는 블록도이다.
도 3은 본 발명의 실시예에 따른 제어 장치 내의 프로그램의 계층 구조를 보여준다.
도 4는 본 발명의 실시예에 따른 스위치의 구조를 보여주는 블록도이다.
도 5는 발명의 실시예에 따른 제어 장치의 동작 방법을 보여주는 흐름도이다.
도 6은 본 발명의 실시예에 따른 소프트웨어 정의 네트워크의 동작을 보여주는 래더 다이어그램이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명의 일 실시예에 따른 소프트웨어 정의 네트워크의 기본적인 구조를 보여주는 블록도이다.
도 1에 도시된 바와 같이, 본 발명의 일 실시예에 따른 소프트웨어 정의 네트워크(10)는 제어 장치(100), 복수의 네트워크 스위치(200), 복수의 서버(300)를 포함한다. 하나의 제어 장치(100)는 복수의 네트워크 스위치(200)를 관리한다.
이하에서는, 제어 장치(100), 복수의 네트워크 스위치(200), 복수의 서버(300)를 커버하는 개념으로 노드라는 용어가 사용된다. 링크는 2개의 노드 사이의 연결을 나타낸다. 플로우는 일련의 링크들을 나타낸다. 복수의 네트워크 스위치(200), 링크, 플로우를 커버하는 개념으로 네트워크 구성 요소(network element)라는 용어가 사용된다.
서버(300)는 다른 서버에 보내기 위한 패킷을 생성하여 네트워크 인터페이스의 포트를 통해 스위치(200)로 패킷을 전송한다.
스위치(200)는 서버(300) 또는 다른 스위치로부터 패킷을 수신하면, 플로우 테이블에 기초하여 패킷을 스위칭한다. 이때, 플로우 테이블이 패킷 스위칭을 위한 플로우 엔트리를 가지지 않는다면, 스위치(200)는 제어 장치(100)에 이벤트를 전송하거나 플로우 룰 요구 메시지를 전송한다.
제어 장치(100)는 복수의 스위치(200)의 플로우 테이블들을 관리한다.
다음은 도 2를 참조하여 본 발명의 실시예에 따른 제어 장치(100)의 구조를 설명한다.
도 2는 본 발명의 실시예에 따른 제어 장치의 구조를 보여주는 블록도이다.
도 2에 도시된 바와 같이, 본 발명의 실시예에 따른 제어 장치(100)는 중앙 처리 유닛(110), 랜덤 액세스 메모리(120), 비활성 메모리(130)를 포함한다.
비활성 메모리(130)는 커널 프로그램(140) 및 하나 또는 복수의 응용 프로그램(150), 인증 키(160), 라이브러리(170)을 저장한다.
커널 프로그램(140)은 응용 프로그램 관리 모듈(141), 이벤트 분배 모듈(142), 내부 데이터베이스 모듈(143), 응용 프로그램 모니터링 모듈(144), 개발자 관리 모듈(145), 보안 관리 모듈(146), 및 응용 프로그램 통신 관리 모듈(147)을 포함한다. 커널 프로그램(140) 내의 여러 모듈들은 하나의 단일 프로그램으로 제작될 수도 있고, 복수의 개별 프로그램으로 제작될 수도 있다.
중앙 처리 유닛(110)은 비활성 메모리(130)에 저장된 랜덤 액세스 메모리(120)에 로딩하고, 프로그램의 지시어(instruction)를 수행하여 프로그램을 동작시킨다.
랜덤 액세스 메모리(120)의 예는 동작 랜덤 액세스 메모리(Dynamic random-access memory, DRAM), Double data rate synchronous dynamic random-access memory (DDR SDRAM)을 포함할 수 있다.
비활성 메모리(130)의 예는 하드 디스크, 플래시 메모리를 포함할 수 있다.
응용 프로그램 관리 모듈(141)은 응용 프로그램을 실제 실행하고, 관리하며, 각 응용 프로그램에 자원 (메모리, CPU 등)을 조정하여 분배하여, 각 응용 프로그램이 서로 독립적으로 원활하게 동작되도록 한다.
이벤트 분배 모듈(142)은 데이터 플레인(네트워크 스위치 들의 집합)에서 전달된 요구 사항들을 포함하는 이벤트를 이벤트 큐를 이용하여 응용 프로그램에 분배한다. 이벤트 분배 모듈(142)은 응용 프로그램의 우선 순위를 고려하여 이벤트를 분배할 수 있다. 따라서, 중요한 응용 프로그램에는 이벤트가 차별적으로 먼저 분배될 수 있다.
내부 데이터베이스 모듈(143)은 제어 장치(100)에서 생성되는 정보들을 저장하여 응용 프로그램이나 다른 모듈들이 이용할 수 있도록 한다.
응용 프로그램 모니터링 모듈(144)은 응용 프로그램의 상태를 모니터링 하면서 응용 프로그램의 동작에 문제가 없는지 체크하고, 만약 문제가 생기는 경우 이에 대한 정보를 수집하고 기록할 수 있다. 또한, 응용 프로그램 모니터링 모듈(144)은 각 응용 프로그램이 사용 하는 자원에 대한 정보 역시 모니터링하고 기록할 수 있다.
개발자 관리 모듈(145)은 응용 프로그램을 개발하는 개발자들에게 제어 장치(100)에 대한 정보를 제공한다. GUI와 같은 외부 관리 툴이 제작될 때, 개발자 관리 모듈(145)은 이 툴에 필요한 정보를 제공할 수 있다.
보안 관리 모듈(146)은 보안, 인증 설정 파일을 분석하여 응용 프로그램이 실제 인증되었는지를 확인하고, 인증되었으면 응용 프로그램을 실행할 수 있다.
응용 프로그램이 인증되지 않았으며, 보안 관리 모듈(146)은 해당 응용 프로그램의 실행을 막거나, 커널 프로그램이 실행되는 프로세스가 아닌 다른 프로세스에서 해당 프로그램을 실행할 수 있다. 응용 프로그램의 동작 중에 해당 응용 프로그램이 보안 설정을 위반하면, 보안 관리 모듈(146)은 경고 혹은 차단 등의 대처를 수행할 수 있다.
응용 프로그램 통신 관리 모듈(147)은 복수의 응용 프로그램(150) 사이의 통신을 지원할 수 있다.
인증 키(160)는 응용 프로그램(150)의 인증에 이용될 수 있다.
라이브러리(170)는 응용 프로그램(150)의 프로그래밍을 도우며, 응용 프로그램(150)에 의해 사용된다.
다음은 도 3을 참조하여 본 발명의 실시예에 따른 제어 장치(100) 내의 프로그램의 계층 구조를 설명한다.
도 3은 본 발명의 실시예에 따른 제어 장치 내의 프로그램의 계층 구조를 보여준다.
도 3에 도시된 바와 같이, 제어 장치(100)는 커널 영역과 사용자 영역을 포함한다.
커널 영역은 응용 프로그램 관리 모듈(141), 이벤트 분배 모듈(142), 내부 데이터베이스 모듈(143), 응용 프로그램 모니터링 모듈(144), 개발자 관리 모듈(145), 보안 관리 모듈(146), 응용 프로그램 통신 관리 모듈(147), 내부 응용 프로그램(150), 하나 이상의 외부 이벤트 큐(180), 하나 이상의 내부 이벤트 큐(190)를 포함한다. 커널 영역 내의 모듈들과 프로그램들은 단일의 프로세스(이하 커널 프로세스)에서 실행될 수 있다.
외부 이벤트 큐(180)는 제어 장치(100)의 외부로부터 기인한 이벤트를 큐잉(queuing)한다. 구체적으로, 외부 이벤트 큐(180)는 스위치(200)에서 발생한 이벤트를 큐잉할 수 있다.
내부 이벤트 큐(190)는 제어 장치(100)의 내부로부터 기인한 이벤트를 큐잉(queuing)한다. 구체적으로, 내부 이벤트 큐(190)는 응용 프로그램(150)이나 제어 장치(100) 내의 여러 모듈에서 발생한 이벤트를 큐잉할 수 있다.
사용자 영역은 응용 프로그램(150), 라이브러리(170), 인증 키(160)를 포함한다. 사용자 영역 내의 프로그램들은 복수의 프로세스(이하 사용자 프로세스)에서 각각 실행될 수 있다.
다음은 도 4를 참조하여 본 발명의 실시예에 따른 스위치(200)의 구조를 설명한다.
도 4는 본 발명의 실시예에 따른 스위치의 구조를 보여주는 블록도이다.
도 4에 도시된 바와 같이, 본 발명의 실시예에 따른 스위치(200)는 복수의 포트(210), 스위칭 모듈(220), 플로우 테이블 저장부(230), 플로우 테이블 관리 모듈(240)를 포함한다.
플로우 테이블 저장부(230)는 플로우 테이블을 가진다.
스위칭 모듈(220)은 플로우 테이블에 기초하여 패킷 스위칭을 수행한다. 이때, 복수의 포트(210) 중 한 포트를 통해 패킷이 수신되면, 스위칭 모듈(220)은 플로우 테이블에 기초하여 복수의 포트(210) 중 어떤 포트로 수신 패킷을 출력할 지를 결정하고, 결정한 포트로 수신 패킷을 출력한다.
플로우 테이블 관리 모듈(240)은 플로우 테이블 저장부(230)의 플로우 테이블을 업데이트가 필요한지를 확인하고, 제어 장치(100)의 플로우 테이블 수정 요청에 따라 플로우 테이블을 수정한다.
다음은 도 5를 참고하여 본 발명의 실시예에 따른 제어 장치의 동작 방법을 설명한다.
도 5는 발명의 실시예에 따른 제어 장치의 동작 방법을 보여주는 흐름도이다.
제어 장치(100)는 부팅되면, 커널 프로그램(140)을 커널 프로세스에서 실행한다(S301). 제어 장치(100)의 중앙 처리 유닛(110)은 커널 프로그램(140)을 랜덤 액세스 메모리(120)에 올려 커널 프로그램(140)을 실행할 수 있다.
커널 프로그램(140)의 보안 관리 모듈(146)은 적어도 하나의 응용 프로그램을 인증한다(S303). 커널 프로그램(140)의 보안 관리 모듈(146)은 인증 키(160)를 이용하여 적어도 하나의 응용 프로그램을 인증할 수 있다. 인증 키(160)는 응용 프로그램(150)의 변조를 체크할 수 있는 정보와 응용 프로그램(150)의 권한의 변경을 체크할 수 있는 정보를 포함할 수 있다. 커널 프로그램(140)의 보안 관리 모듈(146)은 인증 키(160)를 이용하여 응용 프로그램(150)을 인증하여, 응용 프로그램(150)의 변조를 체크하고 응용 프로그램(150)의 권한의 변경을 체크할 수 있다. 응용 프로그램(150)이 변조되었다고 확인되면, 커널 프로그램(140)의 보안 관리 모듈(146)은 응용 프로그램(150)을 인증하는데 실패할 수 있다. 응용 프로그램(150)의 권한이 변경되었다고 확인되면, 커널 프로그램(140)의 보안 관리 모듈(146)은 응용 프로그램(150)을 인증하는데 실패할 수 있다. 응용 프로그램(150)이 변조되지 않고 응용 프로그램(150)의 권한이 변경되지 않았다고 확인되면, 커널 프로그램(140)의 보안 관리 모듈(146)은 응용 프로그램(150)을 인증하는데 성공할 수 있다.
커널 프로그램(140)의 응용 프로그램 관리 모듈(141)은 적어도 하나의 응용 프로그램 중에서 적어도 하나의 인증된 응용 프로그램을 커널 프로세스에서 실행한다(S305). 제어 장치(100)의 시스템의 불안정성을 제공하지 않을 것으로 예상되고 해킹되지 않은 인증된 응용 프로그램을 커널 프로세스에서 실행하여, 인증된 응용 프로그램의 동작 속도를 증가시킬 수 있고, 인증된 응용 프로그램의 자원 소모량을 감소시킬 수 있다. 따라서, 제어 장치(100)는 고성능, 안정성, 보안성을 가질 수 있다.
커널 프로그램(140)의 응용 프로그램 관리 모듈(141)은 적어도 하나의 응용 프로그램 중에서 적어도 하나의 인증 실패된 응용 프로그램을 사용자 프로세스에서 실행한다(S307). 복수의 인증 실패된 응용 프로그램은 복수의 사용자 프로세스에서 각각 실행될 수 있다. 이를 통해, 하나의 사용자 프로세스가 죽더라도, 다른 응용 프로그램은 정상 동작하므로, 제어 장치(100) 전체가 다운되는 것을 방지할 수 있다.
커널 프로그램(140)의 이벤트 분배 모듈(142)은 이벤트 타입에 할당된 우선 순위에 기초하여, 이벤트 큐 내의 이벤트들 중에서 우선적으로 처리할 이벤트를 결정한다(S309). 이벤트 분배 모듈(142)은 이벤트 타입에 기초하여, 이벤트 큐 내의 이벤트들 중에서 가장 높은 우선 순위를 가지는 이벤트를 처리 이벤트로 결정할 수 있다. 예컨데, 이벤트 분배 모듈(142)은 표 1에서와 같은 우선 순위에 따라 처리할 이벤트를 결정할 수 있다.
우선 순위 이벤트 타입
1 Packet_in
2 Connection_down
3 Topology_change
4 Stat_in
5 Connection_up
표 1에서, 플로우 테이블이 없는 새로운 플로우가 생기면, 패킷 유입 이벤트(packet_in)가 발생한다. 네트워크 스위치(200)의 턴오프나 오류 등으로 네트워크 스위치(200)가 다운되면, 연결 다운 이벤트(connection_down)가 발생한다. 토폴로지를 바꿀 상황이 생기면, 토폴로지 변경 이벤트(topology_event)가 발생한다. 통계를 수집할 상황이 생기면, 통계 수집 이벤트(stat_in)가 발생한다. 네트워크 스위치(200)의 턴온이나 오류 해소로 인하여 다운된 네트워크 스위치(200)가 업되면, 연결 업 이벤트(connection up)가 발생한다.
커널 프로그램(140)의 이벤트 분배 모듈(142)은 결정한 이벤트를 우선적으로 처리할 적어도 하나의 응용 프로그램을 결정한다(S311).
일 실시예에서, 이벤트 분배 모듈(142)은 이벤트의 처리를 위하여 복수의 응용 프로그램을 결정하면, 커널 프로그램(140)의 이벤트 분배 모듈(142)은 응용 프로그램 타입에 할당된 우선 순위에 기초하여, 복수의 응용 프로그램 중에서 이벤트를 우선적으로 처리할 응용 프로그램을 결정할 수 있다.
우선 순위 응용 프로그램 타입 응용 프로그램의 예
1 관리자 프로그램
2 네트워크 보안 프로그램 방화벽, DDos Shield
3 라우팅 프로그램
4 사용자 프로그램 UI 프로그램, 통계 프로그램
표 2에서, 관리자 프로그램은 관리자가 소프트웨어 정의 네트워크(10)에 강제 명령을 주는 것을 지원할 수 있다. 네트워크 보안 프로그램은 소프트웨어 정의 네트워크(10)에 네트워크 보안을 제공하는 것을 지원할 수 있다. 특히, 네트워크 보안 프로그램 중 방화벽 프로그램은 소프트웨어 정의 네트워크(10)에 방화벽의 설치를 지원할 수 있다. 네트워크 보안 프로그램 중 DDoS Shield 프로그램은 소프트웨어 정의 네트워크(10)에 DDoS Shield의 설치를 지원할 수 있다. 라우팅 프로그램은 플로우 테이블의 수정과 관리를 지원할 수 있다. 사용자 프로그램은 사용자에게 소프트웨어 정의 네트워크(10)의 상태의 브리핑을 지원할 수 있다.
일 실시예에서, 이벤트 분배 모듈(142)은 이벤트의 처리를 위하여 복수의 응용 프로그램을 결정하면, 커널 프로그램(140)의 이벤트 분배 모듈(142)은 응용 프로그램에 할당된 우선 순위에 기초하여, 복수의 응용 프로그램 중에서 이벤트를 우선적으로 처리할 응용 프로그램을 결정할 수 있다. 예컨데, 방화벽 프로그램과 DDoS Shield 프로그램은 동일한 응용 프로그램 타입을 가지지만, 방화벽 프로그램의 우선 순위는 DDoS Shield 프로그램의 우선 순위보다 더 높도록 방화벽 프로그램에 우선 순위가 할당될 수 있다.
일 실시예에서, 이벤트 분배 모듈(142)은 이벤트의 처리를 위하여 복수의 응용 프로그램을 결정하면, 커널 프로그램(140)의 이벤트 분배 모듈(142)은 응용 프로그램 타입에 할당된 우선 순위와 응용 프로그램에 할당된 우선 순위 모두에 기초하여, 복수의 응용 프로그램 중에서 이벤트를 우선적으로 처리할 응용 프로그램을 결정할 수도 있다. 이때, 응용 프로그램 타입이 먼저 고려되고, 응용 프로그램에 할당된 우선 순위가 나중에 고려될 수 있다. 예컨데, UI 프로그램의 우선 순위가 방화벽 프로그램의 우선 순위보다 높다 하더라도, 방화벽 프로그램의 응용 프로그램 타입에 할당된 우선 순위가 UI 프로그램의 응용 프로그램 타입에 할당된 우선 순위보다 높으므로, 방화벽 프로그램이 우선적으로 이벤트를 처리할 응용 프로그램으로 결정될 수 있다.
커널 프로그램(140)의 이벤트 분배 모듈(142)은 결정된 이벤트를 결정된 응용 프로그램에 전달한다(S312).
커널 프로그램(140)의 응용 프로그램 관리 모듈(141)은 응용 프로그램에 전달된 이벤트의 타입에 할당된 우선 순위, 전달된 이벤트를 이용하는 응용 프로그램의 타입에 할당된 우선 순위, 네트워크 상태, 및 응용 프로그램에 할당된 우선 순위 중 적어도 하나에 기초하여 응용 프로그램을 위한 자원의 양을 결정한다(S313). 이때, 자원은 중앙 처리 유닛(110)의 점유율, 랜덤 액세스 메모리(120)의 메모리 양 중 적어도 하나를 포함할 수 있다.
커널 프로그램(140)의 응용 프로그램 관리 모듈(141)은 결정한 양의 자원을 응용 프로그램에 분배한다(S315).
응용 프로그램(150)은 분배된 자원을 이용하여 전달된 이벤트를 처리한다(S317). 응용 프로그램(150)은 라이브러리(170)를 이용하여 전달된 이벤트를 처리할 수 있다. 이때, 응용 프로그램(150)은 다른 응용 프로그램과 통신하여 이벤트를 처리할 수 있으며, 응용 프로그램 통신 관리 모듈(147)은 응용 프로그램(150)이 다른 응용 프로그램과 통신하는 것을 지원할 수 있다.
패킷 유입 이벤트(packet_in)가 전달되면, 응용 프로그램(150)은 패킷 유입 이벤트(packet_in)에 해당하는 패킷의 플로우를 위한 플로우 룰을 생성하여 패킷 유입 이벤트(packet_in)에 해당하는 스위치에 제공할 수 있다.
연결 다운 이벤트(connection_down)가 전달되면, 응용 프로그램(150)은 이 이벤트에 해당하는 스위치(200)를 우회하기 위한 플로우 룰을 생성하여, 이 생성된 플로우 룰에 해당하는 스위치(200)에 플로우 룰을 제공할 수 있다.
토폴로지 변경 이벤트(topology_event)가 전달되면, 응용 프로그램(150)은 이 이벤트에 해당하는 플로우 룰을 생성하여, 이 생성된 플로우 룰에 해당하는 스위치(200)에 플로우 룰을 제공할 수 있다.
통계 수집 이벤트(stat_in)가 전달되면, 응용 프로그램(150)은 소프트웨어 정의 네트워크(10)의 상태 정보를 수집할 수 있다. 응용 프로그램(150)은 수집한 상태 정보를 분석하여 스위치(200)의 다운을 발견하면, 연결 다운 이벤트를 발생시킬 수 있다.
연결 업 이벤트(connection up)이 전달되면, 응용 프로그램(150)은 이 이벤트에 해당하는 스위치(200)가 이용하는 플로우 룰을 생성하여, 스위치(200)에 제공할 수 있다.
응용 프로그램 모니터링 모듈(144)은 커널 프로세스에서 실행되는 인증된 응용 프로그램(150)이 설정된 권한에 따라 동작하는지를 모니터링한다(S319). 응용 프로그램(150)에는 다양한 권한이 설정될 수 있다. 특히, 응용 프로그램(150)에는 권한으로서 이벤트 허용 범위가 설정될 수 있다. 이때, 표 3에서 보여지는 바와 같이, 이벤트 허용 범위는 이벤트 입력 허용 범위와 이벤트 출력 허용 범위를 포함할 수 있다. 응용 프로그램(150)이 이벤트 허용 범위를 벗어나는 이벤트 타입의 이벤트를 처리하면, 응용 프로그램 모니터링 모듈(144)은 해당 응용 프로그램(150)이 설정된 권한을 넘어서서 동작하는 것으로 판단할 수 있다. 구체적으로, 응용 프로그램(150)이 이벤트 출력 허용 범위를 벗어나는 이벤트 타입의 이벤트를 출력하면, 응용 프로그램 모니터링 모듈(144)은 해당 응용 프로그램(150)이 설정된 권한을 넘어서서 동작하는 것으로 판단할 수 있다. 응용 프로그램(150)에 이벤트 입력 허용 범위를 벗어나는 이벤트 타입의 이벤트가 입력되면, 응용 프로그램 모니터링 모듈(144)은 해당 응용 프로그램(150)이 설정된 권한을 넘어서서 동작하는 것으로 판단할 수 있다.
우선 순위 이벤트 타입 입력 권한 출력 권한
1 Packet_in O X
2 Connection_down O O
3 Topology_change X O
4 Stat_in X X
5 Connection_up O X
커널 프로세스에서 실행되는 인증된 응용 프로그램(150)이 설정된 권한을 넘어서서 동작하는 것으로 확인되면, 응용 프로그램 관리 모듈(141)은 해당 응용 프로그램(150)가 인증 실패된 것으로 보고, 해당 인증 프로그램(150)을 커널 프로세스에서 추방하여 사용자 프로세스에서 실행한다(S321).
다음은 도 6을 참조하여 본 발명의 실시예에 따른 패킷 인 이벤트의 발생 및 처리를 설명한다.
도 6은 본 발명의 실시예에 따른 소프트웨어 정의 네트워크의 동작을 보여주는 래더 다이어그램이다.
플로우 테이블에 기술되지 않은 패킷이 네트워크 스위치(200)에 유입되면(S501), 네트워크 스위치(200)의 플로우 테이블 관리 모듈(240)은 해당 패킷의 플로우 룰을 요구하는 플로우 룰 요구 메시지를 제어 장치(100)에 전달한다(S503). 이때, 플로우 룰은 플로우 테이블일 수 있다.
제어 장치(100)의 이벤트 분배 모듈(142)이 유입 패킷의 플로우 룰을 요구하는 플로우 룰 요구 메시지를 수신하면, 이벤트 분배 모듈(142)은 packet_in 이벤트를 생성하여 외부 이벤트 큐(180)에 저장한다(S505). Packet_in 이벤트의 처리 순서가 되면, 이벤트 분배 모듈(142)은 Packet_in 이벤트를 처리하는 응용 프로그램(예컨데 라우팅 프로그램)에 Packet_in 이벤트를 전달한다.
제어 장치(100)의 응용 프로그램(150)은 Packet_in 이벤트에 해당하는 패킷의 플로우에 적용될 플로우 룰을 생성하고(S507), 네트워크 스위치(200)에 전송한다(S509).
네트워크 스위치(200)의 플로우 테이블 관리 모듈(240)은 플로우 룰에 기초하여 자신의 플로우 테이블을 수정한다(S511).
이후, 네트워크 스위치(200)의 스위칭 모듈(220)은 수정된 플로우 테이블에 기초하여 패킷 스위칭을 수행한다(S513).
구제적으로, 스위칭 모듈(220)은 유입된 패킷이 만족하는 매칭 필드를 가진 플로우 엔트리를 찾고, 유입된 패킷에 대해 플로우 엔트리의 액션을 수행하며, 카운터를 증가시킬 수 있다. 이때, 액션은 유입된 패킷을 어떤 포트로 출력할지를 나타낼 수 있다.
이상에서, 커널 프로그램과 응용 프로그램이라는 용어가 사용되었다. 특히, 본 발명의 커널 프로그램은 CPU와 메모리를 가진 장치가 소프트웨어 정의 네트워크의 제어 장치로 동작하게 하기 위한 네트워크 운영체계의 커널 프로그램일 수 있다. 이때, 윈도우나 리눅스와 같은 통상의 운영체계가 실행된 후, 네트워크 운영체계는 통상의 운영체계 상에서 하나의 응용 프로그램으로서 실행될 수 있다. 그리고, 앞서 설명한 응용 프로그램은 네트워크 운영체계 상에서 실행될 수 있다. 본 발명의 실시예에 따르면, 통상의 운영체계를 위한 한 프로그램인 네트워크 운영체계는 프로그램들을 커널 프로세스 또는 사용자 프로세스에서 실행할 수 있다. 특히, 네트워크 운영체계의 커널 프로그램은 네트워크 운영체계의 커널 프로세스에서 실행되고, 네트워크 운영체계의 응용 프로그램 중에서 인증 실패된 응용 프로그램은 네트워크 운영체계의 사용자 프로세스에서 실행되고, 인증된 응용 프로그램은 네트워크 운영체계의 커널 프로세스에서 실행될 수 있다. 이처럼, 네트워크 운영체계의 커널 프로그램은 통상의 운영체계의 커널 프로그램과 다를 수 있다.
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (12)

  1. 복수의 스위치를 포함하는 소프트웨어 정의 네트워크를 관리하는 제어 장치에 있어서,
    적어도 하나의 응용 프로그램을 인증하는 보안 관리 모듈;
    상기 적어도 하나의 응용 프로그램 중에서 인증된 응용 프로그램을 제1 프로세스에서 실행하고, 인증 실패된 응용 프로그램을 제2 프로세스에서 실행하는 응용 프로그램 관리 모듈; 및
    상기 제1 프로세스에서 실행되는 상기 응용 프로그램 관리 모듈은 상기 인증된 응용 프로그램이 설정된 권한에 따라 동작하는지 모니터링하는 응용 프로그램 모니터링 모듈을 포함하고,
    상기 응용 프로그램 관리 모듈은 상기 인증된 응용 프로그램이 상기 설정된 권한을 넘어서서 동작하는 것으로 확인되면, 상기 확인된 응용 프로그램에 대해 인증 실패된 것으로 판단하고, 상기 확인된 응용 프로그램에 대해 상기 설정된 권한에 대응하는 동작을 수행하는,
    상기 제1 프로세스는 상기 제2 프로세스와 다른
    제어 장치.
  2. 제1항에 있어서,
    복수의 이벤트를 큐잉하는 이벤트 큐; 및
    이벤트 타입에 할당된 우선 순위에 기초하여, 상기 복수의 이벤트 중에서 우선적으로 처리할 이벤트를 결정하고, 상기 결정된 이벤트를 처리할 응용 프로그램에 상기 결정된 이벤트를 분배하는 이벤트 분배 모듈을 더 포함하는
    제어 장치.
  3. 제2항에 있어서,
    상기 이벤트 분배 모듈은
    응용 프로그램 타입에 할당된 우선 순위에 기초하여 상기 결정된 이벤트를 우선적으로 처리할 응용 프로그램을 결정하는
    제어 장치.
  4. 제3항에 있어서,
    상기 이벤트 분배 모듈은
    상기 적어도 하나의 응용 프로그램에 할당된 우선 순위 및 상기 응용 프로그램 타입에 할당된 우선 순위에 기초하여 상기 결정된 이벤트를 우선적으로 처리할 응용 프로그램을 결정하는
    제어 장치.
  5. 제3항에 있어서,
    상기 응용 프로그램 관리 모듈은
    상기 결정된 이벤트의 타입에 할당된 우선 순위에 기초하여 응용 프로그램을 위한 자원의 양을 결정하고, 결정한 양의 자원을 응용 프로그램에 분배하는
    제어 장치.
  6. 제3항에 있어서,
    상기 응용 프로그램 관리 모듈은
    상기 결정된 이벤트를 우선적으로 처리할 응용 프로그램의 타입에 할당된 우선 순위에 기초하여 응용 프로그램을 위한 자원의 양을 결정하고, 결정한 양의 자원을 응용 프로그램에 분배하는
    제어 장치.
  7. 제3항에 있어서,
    상기 응용 프로그램 관리 모듈은
    상기 결정된 이벤트를 우선적으로 처리할 응용 프로그램에 할당된 우선 순위에 기초하여 응용 프로그램을 위한 자원의 양을 결정하고, 결정한 양의 자원을 응용 프로그램에 분배하는
    제어 장치.
  8. 제1항에 있어서,
    상기 확인된 응용 프로그램에 대해 상기 설정된 권한에 대응하는 동작은
    상기 확인된 응용 프로그램을 상기 제1 프로세스에서 추방,
    상기 확인된 응용 프로그램에 대한 차단,
    상기 확인된 응용 프로그램에 대한 경고 중 하나 이상을 포함하는
    제어 장치.
  9. 제8항에 있어서,
    상기 설정된 권한은 이벤트 허용 범위를 포함하는
    제어 장치.
  10. 제1항에 있어서,
    상기 응용 프로그램 관리 모듈은 복수의 인증 실패된 응용 프로그램을 복수의 프로세스에서 각각 실행하고,
    상기 복수의 프로세스의 각각은 상기 제1 프로세스와 다른
    제어 장치.
  11. 복수의 스위치를 포함하는 소프트웨어 정의 네트워크를 관리하는 제어 장치의 동작 방법에 있어서,
    적어도 하나의 응용 프로그램을 인증하는 단계;
    응용 프로그램 관리 모듈에 의해, 상기 적어도 하나의 응용 프로그램 중에서 인증된 응용 프로그램을 제1 프로세스에서 실행하는 단계;
    상기 응용 프로그램 관리 모듈에 의해, 인증 실패된 응용 프로그램을 제2 프로세스에서 실행하는 단계;
    상기 제1 프로세스에서 실행되는 상기 인증된 응용 프로그램이 설정된 이벤트 권한 또는 설정된 자원 권한에 따라 동작하는지 모니터링하는 단계; 및
    상기 인증된 응용 프로그램이 상기 설정된 이벤트 권한 또는 설정된 자원 권한을 넘어서서 동작하는 것으로 확인되면, 상기 확인된 응용 프로그램에 대해 인증 실패된 것으로 판단하고, 상기 확인된 응용 프로그램에 대해 상기 설정된 이벤트 권한 또는 설정된 자원 권한에 대응하는 동작을 수행하는 단계를 포함하고,
    상기 제1 프로세스는 상기 제2 프로세스와 다른
    동작 방법.
  12. 제11항에 있어서,
    상기 확인된 응용 프로그램에 대해 상기 설정된 이벤트 권한 또는 설정된 자원 권한에 대응하는 동작을 수행하는 단계는
    상기 확인된 응용 프로그램을 상기 제1 프로세스에서 추방, 상기 확인된 응용 프로그램에 대한 차단, 상기 확인된 응용 프로그램에 대한 경고 중 하나 이상의 동작을 수행하는 단계를 포함하는
    동작 방법.
KR1020140003296A 2014-01-10 2014-01-10 소프트웨어 정의 네트워크에서 제어 장치 및 그 동작 방법 KR101519543B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140003296A KR101519543B1 (ko) 2014-01-10 2014-01-10 소프트웨어 정의 네트워크에서 제어 장치 및 그 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140003296A KR101519543B1 (ko) 2014-01-10 2014-01-10 소프트웨어 정의 네트워크에서 제어 장치 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR101519543B1 true KR101519543B1 (ko) 2015-05-21

Family

ID=53394492

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140003296A KR101519543B1 (ko) 2014-01-10 2014-01-10 소프트웨어 정의 네트워크에서 제어 장치 및 그 동작 방법

Country Status (1)

Country Link
KR (1) KR101519543B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101747032B1 (ko) * 2016-04-21 2017-06-14 한국과학기술원 소프트웨어 정의 네트워킹 환경에서의 모듈형 제어 장치 및 그 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070047565A1 (en) * 2005-08-24 2007-03-01 Alcatel Network device and interface device for exchanging packets
US20130124707A1 (en) * 2011-11-10 2013-05-16 Brocade Communications Systems, Inc. System and method for flow management in software-defined networks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070047565A1 (en) * 2005-08-24 2007-03-01 Alcatel Network device and interface device for exchanging packets
US20130124707A1 (en) * 2011-11-10 2013-05-16 Brocade Communications Systems, Inc. System and method for flow management in software-defined networks

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101747032B1 (ko) * 2016-04-21 2017-06-14 한국과학기술원 소프트웨어 정의 네트워킹 환경에서의 모듈형 제어 장치 및 그 동작 방법

Similar Documents

Publication Publication Date Title
US11509679B2 (en) Trust topology selection for distributed transaction processing in computing environments
US11902122B2 (en) Application monitoring prioritization
Kumari et al. A survey of fault tolerance in cloud computing
Sousa et al. Highly available intrusion-tolerant services with proactive-reactive recovery
Ujcich et al. Cross-app poisoning in software-defined networking
US20070050777A1 (en) Duration of alerts and scanning of large data stores
US10826943B2 (en) Security controller
CN111709023B (zh) 一种基于可信操作系统的应用隔离方法及系统
US20200167342A1 (en) System for Secure Software Defined Networking Based on Block-Chain and Method Thereof
JP2022530288A (ja) rootレベルアクセス攻撃を防止する方法および測定可能なSLAセキュリティおよびコンプライアンスプラットフォーム
CN110768966A (zh) 一种基于拟态防御的安全云管理系统构建方法和装置
Sasaki et al. Control-plane isolation and recovery for a secure SDN architecture
Villarreal-Vasquez et al. An MTD-based self-adaptive resilience approach for cloud systems
EP4045998A1 (en) Token-based device access restriction systems
Binun et al. Self-stabilizing Byzantine-tolerant distributed replicated state machine
US11240205B1 (en) Implementing rules in firewalls
US9521134B2 (en) Control apparatus in software defined network and method for operating the same
KR102088303B1 (ko) 클라우드 기반 가상 보안서비스 제공 장치 및 방법
KR101519543B1 (ko) 소프트웨어 정의 네트워크에서 제어 장치 및 그 동작 방법
CN108600156A (zh) 一种服务器及安全认证方法
US20120254607A1 (en) System And Method For Security Levels With Cluster Communications
JP5734421B2 (ja) 管理情報生成方法、管理情報生成プログラムおよび管理情報生成装置
EP3079302B1 (en) Method and system for improving the network configuration trustworthiness in a software defined network
Compastié et al. Towards a software-defined security framework for supporting distributed cloud
Lee et al. A pluggable module for enabling a trusted edge device management system based on microservice

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190507

Year of fee payment: 5