KR101707073B1 - Sdn 기반의 에러 탐색 네트워크 시스템 - Google Patents

Sdn 기반의 에러 탐색 네트워크 시스템 Download PDF

Info

Publication number
KR101707073B1
KR101707073B1 KR1020140166811A KR20140166811A KR101707073B1 KR 101707073 B1 KR101707073 B1 KR 101707073B1 KR 1020140166811 A KR1020140166811 A KR 1020140166811A KR 20140166811 A KR20140166811 A KR 20140166811A KR 101707073 B1 KR101707073 B1 KR 101707073B1
Authority
KR
South Korea
Prior art keywords
entry
error
identifier
message
controller
Prior art date
Application number
KR1020140166811A
Other languages
English (en)
Other versions
KR20160063155A (ko
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 KR1020140166811A priority Critical patent/KR101707073B1/ko
Publication of KR20160063155A publication Critical patent/KR20160063155A/ko
Application granted granted Critical
Publication of KR101707073B1 publication Critical patent/KR101707073B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 신속한 에러 탐지가 가능한 SDN(Software Defined Network) 기반의 네트워크 시스템을 제공하는 것으로서, 에러 발생시 에러 타입과 그 위치를 신속하고 간단한 방법으로 감지하여 에러 처리에 소요되는 시간을 줄일 수 있는 네트워크 시스템에 관한 것이다.

Description

SDN 기반의 에러 탐색 네트워크 시스템{ERROR DETECTION NETWORK SYSTEM BASED ON SDN}
본 발명은 신속한 에러 탐지가 가능한 SDN(Software Defined Network) 기반의 네트워크 시스템을 제공하는 것으로서, 에러 발생시 에러 타입과 그 위치를 신속하고 간단한 방법으로 감지하여 에러 처리에 소요되는 시간을 줄일 수 있는 네트워크 시스템에 관한 것이다.
오픈플로우 프로토콜에서 에러 메시지에 기인한 본래 엔트리를 찾기 위해서는 에러 메시지의 헤더의 트랜잭션 식별자(xid)를 사용한다. 예를 들어 플로우 변경에 실패한 경우, 오픈플로우 제어기가 모든 사용된 트랜잭션 식별자(xid)의 자취(track)를 계속 유지해야 한다면, 제어기의 작동 속도나 메모리 측면에서 자원이 많이 소모된다.
1. OpenFlow Switch Specification version 1.4.0(Wire Protocol 0x05), October 14, 2013 [https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-spec-v1.4.0.pdf] 2. Software-Defined Networking: The New Norm for Netwrks, ONF White Paper, April 13, 2012 [https://www.opennetworking.org/images/stories/downloads/sdn-resources/white-papers/wp-sdn-newnorm.pdf] 3. ETSI GS NFV 002 v1.1.1 (2013-10) [http://www.etsi.org/deliver/etsi_gs/NFV/001_099/002/01.01.01_60/gs_NFV002v010101p.pdf]
따라서 본 발명의 목적은 오픈플로우 스위치에서 발생하는 에러를 신속하게 탐색하며, 자원 소모를 최소화할 수 있는 SDN 기반의 에러 탐지 네트워크 시스템을 제공하는데 있다.
본 발명에 따른 네트워크 시스템은, 데이터를 송수신하는 복수의 네트워크 디바이스 간의 플로우 송수신을 중계하며, 상기 플로우 송수신의 중계를 위한 테이블을 구비하는 오픈플로우 스위치; 및 상기 오픈플로우 스위치의 테이블에 엔트리를 추가, 수정, 및 삭제 중 적어도 하나가 실행되도록 하는 테이블 변경 메시지를 상기 오픈플로우 스위치에 전송하는 제어기를 포함하고, 상기 테이블 변경 메시지는 엔트리 식별자를 구비할 수 있다.
여기서, 상기 오픈플로우 스위치의 테이블의 엔트리는 엔트리 식별자와 대응하는 필드를 구비할 수 있다. 또한, 상기 오픈플로우 스위치는 플로우 송수신 중 에러가 발생한 경우, 상기 에러와 연관된 엔트리의 엔트리 식별자를 구비한 에러 메시지를 상기 제어기로 송신할 수 있다. 또한, 상기 오픈플로우 스위치는 상기 에러와 관련된 타입을 식별하여, 상기 식별된 에러 타입과 관련된 에러 타입 코드를 상기 에러 메시지에 삽입할 수 있다. 또한, 상기 제어기는 상기 에러 메시지의 에러 타입 코드 및 엔트리 식별자 중 적어도 하나를 이용하여 에러 처리할 수 있다.
또한, 상기 엔트리 식별자는 상기 테이블의 타입에 따른 타입 코드를 구비할 수 있다. 또한, 상기 제어기는 상기 테이블 변경 메시지에 대응하는 에러 메시지에 구비된 엔트리 식별자를 이용하여 에러 처리할 수 있다.
또한, 상기 제어기는 엔트리 식별자를 관리하는 엔트리 식별자 테이블을 구비할 수 있다. 또한, 상기 엔트리 식별자는 상기 테이블 변경 메시지의 헤더의 트랜잭션 식별자에 삽입될 수 있다. 또한, 상기 엔트리 식별자는 상기 에러 메시지의 헤더의 트랜잭션 식별자에 삽입될 수 있다. 또한, 상기 테이블 변경 메시지의 트랜잭션 식별자는 변경될 엔트리가 속한 테이블의 타입과 관련된 코드 및 엔트리 식별자를 구비하고, 상기 에러 메시지의 트랜잭션 식별자는 에러와 관련된 엔트리가 속한 테이블의 타입과 관련된 코드 및 엔트리 식별자를 구비할 수 있다.
또한, 상기 테이블 변경 메시지의 트랜잭션 식별자는 엔트리 식별자를 구비하고, 상기 테이블 변경 메시지의 트랜잭션 식별자의 크기는 상기 에러 타입 코드의 크기 및 상기 엔트리 식별자의 크기의 합과 동일하거나 보다 크고, 상기 에러 메시지의 트랜잭션 식별자는 상기 에러 타입 코드 및 엔트리 식별자를 구비할 수 있다.
또한, 상기 제어기는 상기 오픈플로우 스위치에 엔트리 삭제 메시지를 송신하거나 상기 오픈플로우 스위치로부터 엔트리 소멸 메시지를 수신한 경우, 관련된 엔트리 식별자를 상기 엔트리 식별자 테이블에서 삭제할 수 있다.
본 발명에 따르면, 각 엔트리 마다 고유의 식별값을 가지고 있어, 오픈플로우 스위치에서 에러를 탐지한 경우 신속하게 오픈플로우 제어기로 전송할 수 있다. 제어기는 에러 메시지의 헤더를 통해, 에러가 난 메시지의 타입 및 에러와 관련된 엔트리를 간단하고 신속하게 탐지할 수 있다. 기존의 메시지 구조나 필드를 이용하여 기존의 오픈플로우 프로토콜에 쉽게 적용할 수 있으며, 에러 탐지에 필요한 CPU, 메모리 등의 자원 소모를 줄이고 동작 속도 향상시킬 수 있다.
도 1은 본 발명의 일실시예에 따른 SDN 네트워크 시스템의 블록 구성도(block diagram),
도 2는 도 1의 네트워크 시스템의 제어기의 블록 구성도,
도 3은 도 1의 네트워크 시스템의 스위치의 블록 구성도,
도 4는 플로우 엔트리의 필드 테이블 및 플로우 엔트리에 따른 동작 종류를 나타내는 동작 테이블,
도 5는 그룹 및 미터 테이블의 필드 테이블,
도 6은 본 발명의 다른 실시예에 따른 도 1의 네트워크 시스템의 제어기의 블록 구성도,
도 7은 본 발명의 다른 실시예에 따른 도 1의 네트워크 시스템의 스위치의 블록 구성도,
도 8은 본 발명의 일 실시예에 따른 트랜잭션 식별자 패킷의 예시도,
도 9는 본 발명의 일 실시예에 따른 도 6의 제어기에서의 에러 처리 방법에 관한 순서도,
도 10은 본 발명의 일 실시예에 따른 도 7의 오픈플로우 스위치에서의 에러 처리 방법에 관한 순서도, 및
도 11은 본 발명의 다른 실시예에 따른 도 7의 오픈플로우 스위치에서의 에러 처리 방법에 관한 순서도이다.
이하, 도면을 참조하여 본 발명을 보다 상세하게 설명한다.
제 1, 제 2등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 또한 네트워크 상의 제1 구성요소와 제2 구성요소가 연결되어 있거나 접속되어 있다는 것은, 유선 또는 무선으로 제1 구성요소와 제2 구성요소 사이에 데이터를 주고 받을 수 있음을 의미한다.
또한, 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 단순히 본 명세서 작성의 용이함만이 고려되어 부여되는 것으로서, 그 자체로 특별히 중요한 의미 또는 역할을 부여하는 것은 아니다. 따라서, 상기 "모듈" 및 "부"는 서로 혼용되어 사용될 수도 있다.
이와 같은 구성요소들은 실제 응용에서 구현될 때 필요에 따라 2 이상의 구성요소가 하나의 구성요소로 합쳐지거나, 혹은 하나의 구성요소가 2 이상의 구성요소로 세분되어 구성될 수 있다. 도면 전체를 통하여 동일하거나 유사한 구성요소에 대해서는 동일한 부여하였고, 동일한 도면 부호를 가지는 구성요소에 대한 자세한 설명은 전술한 구성요소에 대한 설명으로 대체되어 생략될 수 있다.
도 1은 본 발명의 일실시예에 따른 SDN 네트워크 시스템의 블록 구성도(block diagram), 도 2는 도 1의 네트워크 시스템의 제어기의 블록 구성도, 도 3은 도 1의 네트워크 시스템의 스위치의 블록 구성도, 도 4는 플로우 엔트리의 필드 테이블 및 플로우 엔트리에 따른 동작 종류를 나타내는 동작 테이블, 도 5는 그룹 및 미터 테이블의 필드 테이블이다.
도 1을 참조하면, 본 발명에 일 실시예에 따른 SDN 네트워크 시스템은 제어기(contoller)(10), 복수의 스위치(20) 및 복수의 네트워크 디바이스(30)를 포함할 수 있다.
네트워크 디바이스(30)는 데이터나 정보를 주고 받고자 하는 사용자 단말 장치, 또는 특정 기능을 수행하는 물리 장치 또는 가상 장치를 포함할 수 있다. 하드웨어 관점에서, 네트워크 디바이스(30)는 PC, 클라이언트 단말기, 서버, 워크스테이션, 수퍼컴퓨터, 이동통신 단말기, 스마트폰, 스마트패드 등이 있을 수 있다. 또한 네트워크 디바이스(30)는 물리 장치 상에 생성된 가상 머신(VM)일 수 있다.
네트워크 디바이스(30)는 여러가지 네트워크 상의 기능을 수행하는 네트워크 기능(network function)으로 지칭될 수 있다. 네트워크 기능은 안티(anti) DDoS, 침입 감지/차단 (IDS/IPS), 통합 보안 서비스, 가상 사설망 서비스, 안티 바이러스, 안티 스팸, 보안 서비스, 접근관리 서비스, 방화벽, 로드 밸런싱, QoS, 비디오 최적화 등을 포함할 수 있다. 이러한 네트워크 기능은 가상화될 수 있다.
가상화된 네트워크 기능으로 ETSI(유럽전기통신표준협회)에서 발행한 NFV 관련 백서(비특허문헌 3 참조)에서 정의된 네트워크 기능 가상화(Network Function Virtualiztion; NFV)가 있다. 본 명세서에서 네트워크 기능(NF)은 네트워크 기능 가상화(NFV)와 혼용하여 사용될 수 있다. NFV는 테넌트(tenant)별 필요한 L4-7 서비스 연결을 동적으로 생성하여 필요한 네트워크 기능을 제공하거나, DDoS 공격의 경우 정책 기반으로 필요한 방화벽, IPS 및 DPI 기능 등을 일련의 서비스 체이닝으로 빠르게 제공되는데 이용될 수 있다. 또한 NFV는 방화벽이나 IDS/IPS를 쉽게 온오프 할 수 있으며, 자동으로 프로비저닝(provisioning)할 수 있다. NFV는 오버 프로비저닝의 필요성도 줄일 수 있다.
제어기(controller)(10)는 SDN 시스템을 제어하는 일종의 지휘 컴퓨터로서, 다양하고 복잡한 기능들, 예를 들어, 라우팅, 정책 선언, 및 보안 체크 등을 할 수 있다. 제어기(10)는 하위 계층의 복수의 스위치(20)에서 발생하는 패킷의 플로우를 정의할 수 있다. 제어기(10)는 네트워크 정책 상 허용되는 플로우에 대해 네트워크 토폴로지 등을 참조하여 플로우가 경유할 경로(데이터 경로)를 계산한 후, 경로 상의 스위치에 상기 플로우의 엔트리가 설정되도록 할 수 있다. 제어기(10)는 특정 프로토콜, 예를 들어, 오픈플로우 프로토콜을 이용하여 스위치(20)와 통신할 수 있다. 제어기(10)와 스위치(20)의 통신 채널은 SSL에 의해 암호화 될 수 있다.
도 2를 참조하면, 제어기(10)는 스위치(20)와 통신하는 스위치 통신부(110), 제어부(100), 및 저장부(190)를 포함할 수 있다.
저장부(190)는 제어부(100)의 처리 및 제어를 위한 프로그램을 저장할 수 있다. 저장부(190)는 입력되거나 출력되는 데이터들(패킷, 메시지 등)을 임시 저장을 위한 기능을 수행할 수 있다. 저장부(190)는 플로우 엔트리를 저장하는 엔트리 데이터베이스(DB)(191)를 포함할 수 있다.
제어부(100)는 통상적으로 상기 각 부의 동작을 제어하여 제어기(10)의 전반적인 동작을 제어할 수 있다. 제어부(100)는 토폴로지 관리 모듈(120), 경로 계산 모듈(125), 엔트리 관리 모듈(135) 및 메시지 관리 모듈(130)을 포함할 수 있다. 각 모듈은 제어부(100) 내에 하드웨어로 구성될 수 있고, 제어부(100)와 별개의 소프트웨어로 구성될 수도 있다.
토폴로지 관리 모듈(120)은 스위치 통신부(110)를 통하여 수집된 스위치(20)의 접속 관계를 기초로 네트워크 토폴로지 정보를 구축 및 관리 할 수 있다. 네트워크 토폴로지 정보는 스위치들 사이의 토폴로지 및 각 스위치에 연결되어 있는 네트워크 디바이스 토폴로지를 포함할 수 있다.
경로 계산 모듈(125)은 토폴로지 관리 모듈(120)에서 구축된 네트워크 토폴로지 정보를 기초로 스위치 통신부(110)를 통해 수신한 패킷의 데이터 경로 및 상기 데이터 경로 상의 스위치에 실행시키는 액션 열을 구할 수 있다.
엔트리 관리 모듈(135)는 경로 계산 모듈(125)에서 계산된 결과, QoS 등의 정책, 사용자 지시 등을 기초로 플로우 테이블, 그룹 테이블, 및 미터 테이블 등의 엔트리로서 엔트리 DB(191)에 등록할 수 있다. 엔트리 관리 모듈(135)은 스위치(20)에 미리 각 테이블의 엔트리가 등록되도록 하거나(proactive), 스위치(20)로부터의 엔트리의 추가 또는 갱신 요구에 응답(reactive)할 수 있다. 엔트리 관리 모듈(135)은 필요에 따라 또는 스위치(10)의 엔트리 소멸 메시지 등에 의해 엔트리 DB(191)의 엔트리를 변경하거나 삭제할 수 있다.
메시지 관리 모듈(130)은 스위치 통신부(110)를 통해 수신한 메시지를 해석하거나, 스위치 통신부(110)를 통해 스위치로 전송되는 후술할 제어기-스위치 메시지를 생성할 수 있다. 제어기-스위치 메시지 중 하나인 상태 변경 메시지는 엔트리 관리 모듈(135)에 따른 엔트리 또는 엔트리 DB(191)에 저장된 엔트르에 기초하여 생성될 수 있다.
스위치(20)는 오픈플로우 프로토콜을 지원하는 물리적인 스위치 또는 가상 스위치일 수 있다. 스위치(20)는 수신한 패킷을 처리하여, 네트워크 디바이스(30) 사이의 플로우를 중계할 수 있다. 이를 위해 스위치(20)는 하나의 플로우 테이블 또는 비특허문헌 1에 상술되어 있는 파이프라인(pipeline) 처리를 위해 다중 플로우 테이블을 구비할 수 있다.
플로우 테이블은 네트워크 디바이스(30)의 플로우를 어떻게 처리할 지의 규칙을 정의한 플로우 엔트리를 포함할 수 있다.
플로우(flow)는 하나의 스위치 관점에서 적어도 하나의 헤더 필드의 값을 공유하는 일련의 패킷들 또는 다중 스위치의 여러 플로우 엔트리(flow entry)들의 조합에 따른 특정 경로의 패킷 흐름을 의미할 수 있다. 오픈플로우 네트워크는 플로우 단위로 경로 제어, 장애 회복, 부하 분산 및 최적화를 행할 수 있다.
스위치(20)는 다중 스위치의 조합에 따른 플로우의 입구 및 출구 측 에지 스위치(edge switch)(ingress switch and egress switch)와 에지 스위치 사이의 코어 스위치(core switch)로 구분될 수 있다.
도 3을 참조하면, 스위치(20)는 다른 스위치 및/또는 네트워크 디바이스와 통신하는 포트부(205), 제어기(10)와 통신하는 제어기 통신부(210), 스위치 제어부(200), 및 저장부(290)를 포함할 수 있다.
포트부(205)는 스위치 또는 네트워크 디바이스에서 유출입되는 한 쌍의 포트를 다수 구비할 수 있다. 한 쌍의 포트는 하나의 포트로 구현될 수 있다.
저장부(290)는 스위치 제어부(210)의 처리 및 제어를 위한 프로그램을 저장할 수 있다. 저장부(290)는 입력되거나 출력되는 데이터들(패킷, 메시지 등)을 임시 저장을 위한 기능을 수행할 수 있다. 저장부(290)는 플로우 테이블, 그룹 테이블, 및 미터 테이블 등의 테이블(291)을 구비할 수 있다. 테이블(230) 또는 테이블의 엔트리는 제어기(10)에 의해 추가, 수정, 삭제될 수 있다. 테이블 엔트리는 자체적으로 파기될 수 있다.
플로우 테이블은 오픈플로우의 파이프라인(pipeline)을 처리하기 위해 다중 플로우 테이블로 구성될 수 있다. 도 4를 참조하면, 플로우 테이블의 플로우 엔트리는 패킷과 매치하는 조건(대조 규칙)을 기술한 매치 필드(match fields), 우선 순위(priority), 매치되는 패킷이 있는 경우 업데이트되는 카운터(counters), 플로우 엔트리에 매치되는 패킷이 있으면 발생하는 다양한 액션들의 집합인 인스트럭션(instruction), 스위치에서 파기될 시간을 기술하는 타임아웃(timeouts), 제어기에 의해 선택되어지는 오파큐(opaque) 타입으로, 제어기에 의해 플로우 통계, 플로우 변경, 및 플로우 삭제를 필터하기 위해 사용될 수 있으며, 패킷 처리시 사용되지 않는 쿠키(cookie) 등의 튜플(tuple)을 포함할 수 있다. 인스트럭션(instruction)은 다른 플로우 테이블로 패킷을 전달하는 것과 같은 파이프라인 프로세싱의 변경할 수 있다. 또한 인스트럭션은 액션 셋(action set)에 액션을 더하는 액션(action)들의 집합, 또는 패킷에 바로 적용하기 위한 액션들의 리스트를 포함할 수 있다. 액션(action)은 특정 포트로 패킷을 전송하거나, TTL 필드를 감소시키는 것과 같이 패킷을 수정하는 작업을 의미한다. 액션은 플로우 엔트리와 연관된 인스트럭션 집합의 일부 또는 그룹 엔트리와 연관된 액션 버킷에 속할 수 있다. 액션 셋(action set)은 각 테이블에서 지시된 액션이 누적된 집합을 의미한다. 액션 셋은 매치되는 테이블이 없을 때 수행될 수 있다. 도 5는 플로우 엔트리에 의한 여러 패킷 처리를 예시한다.
파이프라인(pipleline)은 패킷과 플로우 테이블 사이의 일련의 패킷 처리 과정을 의미한다. 스위치(20)에 패킷이 유입되면, 스위치(20)는 첫번째 플로우 테이블의 우선 순위가 높은 순서대로 패킷과 매칭되는 플로우 엔트리를 탐색한다. 매칭이 되면 해당 엔트리의 인스트럭션을 수행한다. 인스트럭션은 매칭되면 바로 수행하는 명령(apply-action), 액션 셋의 내용을 지우거나 추가/수정하는 명령(clear-action; write-action), 메타데이터(metadata) 수정 명령(write-metadata), 지정된 테이블로 메타데이터와 함께 패킷을 이동시키는 고우투 명령(goto-table) 등이 있다. 패킷과 매칭되는 플로우 엔트리가 없는 경우, 테이블 설정에 따라 패킷을 폐기(drop)하거나 제어기(10)로 패킷을 패킷-인 메시지(packet-in message)에 실어서 보낼 수 있다.
그룹 테이블은 그룹 엔트리들을 포함할 수 있다. 그룹 테이블은 플로우 엔트리에 의해 지시되어 추가적인 포워딩 방법들을 제시할 수 있다. 도 6을 참조하면, 그룹 테이블의 그룹 엔트리는 다음과 같은 필드를 구비할 수 있다. 그룹 엔트리를 구분할 수 있는 그룹 식별자(group identifier), 그룹 엔트리에 정의된 액션 버킷들을 일부(select) 또는 전부(all) 수행할 것이 여부에 대한 규칙을 명시한 그룹 타입(group type), 플로우 엔트리의 카운터와 같이 통계를 위한 카운터(counters), 및 그룹을 위해 정의된 파라미터들과 연관된 액션들의 집합인 액션 버킷(action buckets)을 포함할 수 있다.
미터 테이블(meter table)은 미터 엔트리들(meter entries)로 구성되며, 플로우 미터-당(per-flow meters)를 정의한다. 플로우 미터-당은 오픈플로우가 다양한 QoS 작동을 적용될 수 있도록 할 수 있다. 미터(meter)는 패킷의 레이트(rate of packets)를 측정 및 제어할 수 있는 일종의 스위치 요소이다. 도 7을 참조하면, 미터 테이블(meter table)은 미터를 식별하는 미터 식별자(meter identifier), 밴드(band)에 지정된 속도와 패킷 동작 방법을 나타내는 미터 밴드(meter bands), 및 패킷이 미터에서 동작될 때 업데이트되는 카운터(counters) 필드들로 구성된다. 미터 밴드(meter bands)는 패킷이 어떻게 처리되는 지를 나타내는 밴드 타입(band type), 미터에 의해 미터 밴드를 선택하는데 사용되는 레이트(rate), 미터 밴드에 의해 패킷들이 처리될 때 업데이트되는 카운터(counters), 및 선택적인 아규먼트(argument)를 가지는 배드 타입들인 특정 아규먼트 타입(type specific argument)과 같은 필드들로 구성될 수 있다.
스위치 제어부(210)는 통상적으로 상기 각 부의 동작을 제어하여 스위치(200)의 전반적인 동작을 제어할 수 있다. 제어부(210)는 테이블(291)을 관리하는 테이블 관리 모듈(240), 플로우 검색 모듈(220), 플로우 처리 모듈(230), 및 패킷 처리 모듈(235)를 포함할 수 있다. 각 모듈은 제어부(110) 내에 하드웨어로 구성될 수 있고, 제어부(110)와 별개의 소프트웨어로 구성될 수도 있다.
테이블 관리 모듈(240)은 제어기 통신부(210)를 통해 제어기(10)로부터 수신한 엔트리를 적절한 테이블에 추가하거나, 타임 아웃(time out)된 엔트리를 주기적으로 제거할 수 있다.
플로우 검색 모듈(220)은 유저 트래픽으로서 수신한 패킷으로부터 플로우 정보를 추출할 수 있다. 플로우 정보는 에지 스위치의 패킷 유입 포트인 입구 포트(ingress port)의 식별 정보, 해당 스위치의 패킷 유입 포트(incoming port)의 식별 정보, 패킷 헤더 정보(송신원 및 목적지의 IP 주소, MAC 주소, 포트, 및 VLAN 정보 등), 및 메타데이터 등을 포함할 수 있다. 메타데이터는 이전 테이블에서 선택적으로 추가되거나, 다른 스위치에서 추가된 데이터일 수 있다. 플로우 검색 모듈(220)은 추출한 플로우 정보를 참조하여 테이블(291)에 수신 패킷에 대한 플로우 엔트리가 있는지 검색할 수 있다. 플로우 검색 모듈(220)은 플로우 엔트리가 검색되면, 플로우 처리 모듈(260)에 검색된 플로우 엔트리에 따라 수신 패킷을 처리하도록 요청할 수 있다. 만일 플로우 엔트리 검색이 실패하면, 플로우 검색 모듈(220)은 수신 패킷 또는 수신 패킷의 최소한의 데이터를 제어기 통신부(210)를 통해 제어기(100)로 전송할 수 있다.
플로우 처리 모듈(230)는 플로우 검색 모듈(220)에서 검색된 엔트리에 기술된 절차에 따라 패킷을 특정 포트 또는 다중 포트로 출력하거나, 드롭시키거나 또는 특정 헤더 필드를 수정하는 등의 액션을 처리할 수 있다.
플로우 처리 모듈(230)는 플로우 엔트리의 파이프라인 프로세스를 처리하거나 액션을 변경하기 위한 인스트럭션을 실행하거나 다중 플로우 테이블에서 더 이상 다음 테이블로 갈 수 없을 때 액션 세트를 실행할 수 있다.
패킷 처리 모듈(235)은 플로우 처리 모듈(230)에 의한 처리된 패킷을 플로우 처리 모듈(230)에서 지정한 포트부(205)의 하나 또는 2 이상의 포트로 실제로 출력할 수 있다.
도 1에 도시되어 있지 않지만, SDN 네트워크 시스템은 가상 네트워크 디바이스, 가상 스위치 등을 생성, 변경 및 삭제하는 오케스트레이터를 더 포함할 수 있다. 오케스트레이터는 가상 네트워크 디바이스를 생성하는 경우, 가상 네트워크가 접속할 스위치의 식별 정보, 해당 스위치에 연결되는 포트 식별 정보, MAC 주소, IP 주소, 터넨트(tenant) 식별 정보 및 네트워크 식별 정보 등의 네트워크 디바이스의 정보를 제어기(10)로 제공할 수 있다.
제어기(10)와 스위치(20)는 다양한 정보를 주고 받는데, 이를 오픈플로우 프로토콜 메시지(openflow protocol message)라 칭한다. 이러한 오픈플로우 메시지는 제어기-스위치 메시지(controller-to-switch message), 비동기 메시지(asynchronous message), 및 대칭 메시지(symmetric message) 등의 타입이 있다. 각 메시지는 엔트리를 식별하는 트랜잭션 식별자(transaction id; xid)를 헤더에 구비할 수 있다.
제어기-스위치 메시지는 제어기(10)가 생성하여 스위치(20)에 전달하는 메시지로써, 주로 스위치(20)의 상태를 관리하거나 점검하기 위해 사용된다. 제어기-스위치 메시지는 제어기(10)의 제어부(100), 특히 메시지 관리 모듈(130)에 의해 생성될 수 있다.
제어기-스위치 메시지는 스위치의 능력(capabilities)을 문의하는 기능(features), 스위치(20)의 구성 매개 변수 등의 설정을 문의하고 설정하기 위한 설정(configuration), 오픈플로우 테이블의 플로우/그룹/미터 엔트리들을 추가/삭제/수정하기 위한 상태 변경 메시지(modify state message), 패킷-인 메시지를 통해 스위치로부터 수신한 패킷을 해당 스위치 상의 특정한 포트로 전송하도록 하는 패킷-아웃 메시지(packet-out message) 등이 있다. 상태 변경 메시지는 플로우 테이블 변경 메시지(modify flow table message), 플로우 엔트리 변경 메시지(modify flow entry message), 그룹 엔트리 변경 메시지(modify group entry message), 포트 변경 메시지(prot modification message), 및 미터 엔트리 변경 메시지(meter modification message) 등이 있다.
비동기 메시지는 스위치(20)가 생성하는 메시지로서, 스위치의 상태 변경 및 네트워크 이벤트 등을 제어기(10)에서 업테이트하기 위해 사용된다. 비동기 메시지는 스위치(20)의 제어부(200), 특히 플로우 검색 모듈(220)에 의해 생성될 수 있다.
비동기 메시지로 패킷-인 메시지(packet-in message), 플로우 삭제 메시지(flow-removed), 에러 메시지 등이 있다. 패킷-인 메시지는 스위치(20)가 제어기(10)에게 패킷을 전송하여 패킷에 대한 제어를 받기 위해 사용된다. 패킷-인 메시지는 스위치(20)가 미지의 패킷을 수신한 경우, 데이터 경로를 요구하기 위해, 오픈플로우 스위치(20)에서 제어기(10)로 전송되는 수신 패킷 또는 그 사본의 전부 또는 일부를 포함하는 메시지이다. 유입 패킷에 연관된 엔트리의 액션이 제어기로 보내라고 정해져 있을 때에도 패킷-인 메시지가 사용된다. 삭제된 플로우(flow-removed) 메시지는 플로우 테이브에서 삭제할 플로우 엔트리 정보를 제어기(10)로 전달하기 위해 사용된다. 이 메시지는 제어기(10)가 스위치(20)에 해당 플로우 엔트리 삭제를 요청하였거나 플로우 타임아웃(timeout)에 의한 플로우 만기 처리(flow expiry process)에서 발생한다.
대칭 메시지는 제어기(10) 및 스위치(20) 모두에서 생성되며, 상대방의 요청이 없어도 전송되는 특징이 있다. 제어기와 스위치 간에 연결을 개시할 때 사용되는 헬로(hello), 제어기 및 스위치 간 연결에 이상이 없음을 확인하기 위한 에코(echo), 및 제어기나 스위치에 의해 사용되며 문제를 반대측에 알리기 위한 에러 메시지(error message) 등을 포함할 수 있다. 에러 메시지는 대부분 제어기에 의해 개시된 요청에 따른 실패를 나타나기 위해 스위치에서 사용된다.
도 6은 본 발명의 다른 실시예에 따른 도 1의 네트워크 시스템의 제어기의 블록 구성도, 도 7은 본 발명의 다른 실시예에 따른 도 1의 네트워크 시스템의 스위치의 블록 구성도, 도 8은 본 발명의 일 실시예에 따른 트랜잭션 식별자 패킷의 예시도, 도 9는 본 발명의 일 실시예에 따른 도 6의 제어기에서의 에러 처리 방법에 관한 순서도, 도 10은 본 발명의 일 실시예에 따른 도 7의 오픈플로우 스위치에서의 에러 처리 방법에 관한 순서도, 및 도 11은 본 발명의 다른 실시예에 따른 도 7의 오픈플로우 스위치에서의 에러 처리 방법에 관한 순서도이다. 도 1 내지 도 5를 참조한다.
제어기(controller)(10)는 SDN 시스템을 제어하는 일종의 지휘 컴퓨터로서, 다양하고 복잡한 기능들, 예를 들어, 라우팅, 정책 선언, 및 보안 체크 등을 할 수 있다. 제어기(10)는 하위 계층의 복수의 스위치(20)에서 발생하는 패킷의 플로우를 정의할 수 있다. 제어기(10)는 네트워크 정책 상 허용되는 플로우에 대해 네트워크 토폴로지 등을 참조하여 플로우가 경유할 경로(데이터 경로)를 계산한 후, 경로 상의 스위치에 상기 플로우의 엔트리가 설정되도록 할 수 있다. 제어기(10)는 특정 프로토콜, 예를 들어, 오픈플로우 프로토콜을 이용하여 스위치(20)와 통신할 수 있다. 제어기(10)와 스위치(20)의 통신 채널은 SSL에 의해 암호화 될 수 있다.
도 6을 참조하면, 제어기(10)는 스위치(20)와 통신하는 스위치 통신부(110), 제어부(100), 및 저장부(190)를 포함할 수 있다. 도 2의 제어기와 비교하면, 본 실시예에 따른 제어기(10)는 제어부(100)가 에러 처리 모듈(180)을 더 포함하는 차이가 있다. 이하 차이점을 중심으로 설명하며, 생략된 다른 구성요소의 설명은 도 2의 설명을 참조한다.
도 9를 참조하여 설명하면, 제어기(10)는 오픈플로우 스위치의 테이블 엔트리 추가, 삭제, 또는 변경할 상황이 발생하면(S310), 제어기(10)의 에러 처리 모듈(180)은 플로우/그룹/미터 테이블의 각 엔트리 마다 식별자를 생성하여 연관되도록 할 수 있다(S320). 이에 의해, 엔트리 DB(191)의 각 엔트리는 엔트리 식별자를 더 구비할 수 있다.
메시지 관리 모듈(130)은 오픈플로우 스위치(20)의 오픈플로우 테이블의 플로우/그룹/미터 엔트리들을 변경, 수정, 및 삭제하도록 하는 엔트리 변경 메시지(상태 변경 메시지)를 생성할 때, 해당 메시지에 엔트리 식별자를 구비하도록 할 수 있다(S330). 제어기(10)는 엔트리 식별자를 구비한 상태 변경 메시지를 해당 오픈플로우 스위치로 전송할 수 있다(S340).
모든 오픈플로우 메시지(패킷)의 헤더는 버전(version), 타입(type), 헤더의 길이(length), 및 트랜잭션 아이디(xid)를 구비한다. 트랜잭션 식별자(xid)는 해당 패킷에 연관되어 있는 값이다. 도 8(a)에 도시된 바와 같이, 트랜잭션 식별자(xid) 필드는 총 32비트로 구성된다.
본 발명에서 오픈플로우 메시지에 엔트리 식별자를 삽입하기 위해, 트랜잭션 식별자(xid)를 사용하는 것이 바람직하다. 오픈플로우 메시지 헤더에 연관되어, 엔트리 식별자를 보다 신속하게 검색할 수 있다. 또한, 기존의 메시지 헤더 구조를 변경하거나 새로운 필더를 추가시키지 않아, 기존 기술에 쉽게 적용가능하다. 트랜잭션 식별자(xid) 자체가 메시지를 식별하는 기능이므로, 각 엔트리 식별자를 서로 구별될 수 있도록 유일해야 한다. 임의의 엔트리가 삭제된 경우, 엔트리 식별자를 회수하여 재사용하는 것이 트랜잭션 식별자(xid)가 고갈되지 않도록 하는 면에 유리하다. 엔트리 식별자는 트랜잭션 식별자(xid) 전체를 사용할 수 있다. 후술할 에러 타입 코드를 위해, 도 8(b)와 같이 엔트리 식별자는 트랜잭션 식별자(xid)의 일부를 사용할 수 있다.
엔트리 식별자로서 트랜잭션 식별자(xid) 전체에 사용되는 경우, 도 8(c)와 같이 일부 비트를 메시지 타입으로 정의하여 전송할 수 있다(S330). 상태 변경 메시지 처리에 에러가 발생한 경우, 제어기(10)는 오픈플로우 스위치(20)에서 전송하는 에러 메시지의 트랜잭션 식별자(xid)를 통해 어느 타입의 상태 변경 메시지인지 신속하게 판단할 수 있다.
스위치(20)는 오픈플로우 프로토콜을 지원하는 물리적인 스위치 또는 가상 스위치일 수 있다. 스위치(20)는 수신한 패킷을 처리하여, 네트워크 디바이스(30) 사이의 플로우를 중계할 수 있다. 이를 위해 스위치(20)는 하나 또는 그 이상의 플로우 테이블을 구비하며, 추가적인 포워딩 방법을 제시하기 위한 그룹 테이블, 및 QoS 적용 등을 위한 미터 테이블 등을 더 구비할 수 있다.
도 7을 참조하면, 스위치(20)는 다른 스위치 및/또는 네트워크 디바이스와 통신하는 포트부(205), 제어기(10)와 통신하는 제어기 통신부(210), 스위치 제어부(200), 및 저장부(290)를 포함할 수 있다. 도 3의 스위치와 비교하면, 본 실시예에 따른 오픈플로우 스위치(20)는 제어부(200)가 에러 관리 모듈(280)을 더 포함하는 차이가 있다. 이하 차이점을 중심으로 설명하며, 생략된 다른 구성요소의 설명은 도 3의 설명을 참조한다.
저장부(290)에 저장되는 플로우 테이블, 그룹 테이블, 및 미터 테이블 등의 테이블(291)은 제어기(10)에 의한 엔트리 리스트를 각기 구비할 수 있다. 각 엔트리는 제어기(10)에서 전송한 오픈플로우 메시지의 헤더에 구비된 엔트리 식별자에 대응하는 필드를 구비할 수 있다.
플로우 테이블의 경우 쿠키 필드의 일부가 엔트리 식별자에 대응될 수 있다. 쿠키 필드는 64비트로 정의되어 있다. 앞서 기술한 바와 같이 엔트리 식별자가 32비트의 트랜잭션 식별자(xid)를 통해 전달되는 경우, 엔트리 식별자는 쿠기 필드의 일부를 사용하여 비트 크기의 문제를 최소화할 수 있다. 그룹 테이블의 경우 각 엔트리 식별자는 32비트의 그룹 식별자(group identifier)에 적용될 수 있다. 이 경우 제어기(10)는 그룹 엔트리 변경 메시지의 그룹 식별자를 트랜잭션 식별자(xid)의 전부 또는 일부와 동일하게 하는 것이 바람직하다. 미터 테이블의 경우 각 엔트리 식별자는 32비트의 미터 식별자(meter identifier)에 적용될 수 있다. 이 경우 제어기(10)는 미터 엔트리 변경 메시지의 미터 식별자를 트랜잭션 식별자(xid)의 전부 또는 일부와 동일하게 하는 것이 바람직하다.
도 8(b)와 같이 트랜잭션 식별자(xid)의 일부에 엔트리 식별자가 삽입되어 온 경우, 오픈플로우 스위치(20)는 엔트리 식별자의 총 비트수에 후술할 에러 타입 코드에 사용될 비트수를 더한 비트수를 상술한 쿠키 필드, 그룹 식별자 필드, 또는 미터 식별자 필드에 적용하는 것이 바람직하다.
도 8(c)와 같이 트랜잭션 식별자(xid)에 일부는 엔트리 식별자로 나머지는 메시지 타입으로 오픈플로우 메시지를 오픈플로우 스위치(20)가 수신한 경우, 오픈플로우 스위치(20)는 선택적으로 또는 기설정 값에 따라 메시지 타입을 삭제하거나 보존한 상태로 트랜잭션 식별자(xid)를 상술한 쿠키 필드, 그룹 식별자 필드, 또는 미터 식별자 필드에 적용할 수 있다.
도 10은 제어기(10)에서 메시지 타입을 포함하는 트랜잭션 식별자(xid)를 헤더에 구비한 메시지를 오픈플로우 스위치(20)에서 수신하고, 오픈플로우 스위치(20)는 해당 메시지 타입을 유지한 이후의 에러 발생한 경우, 오픈플로우 스위치(20)의 에러 처리에 관한 순서도이다.
도 10을 참조하면, 오픈플로우 스위치(20)에서 패킷 처리 중 에러가 발생하면(S410), 오픈플로우 스위치(20)의 에러 관리 모듈(280)는 에러와 관련된 엔트리를 탐색할 수 있다(S420). 에러 관리 모듈(280)는 해당 엔트리의 메시지 타입 및 엔트리 식별자를 트랜잭션 식별자(xid)로 생성하고(S430), 생성된 트랜잭션 식별자(xid)를 에러 메시지 헤더의 일부로 하여 해당 에러 메시지를 제어기(10)로 전송할 수 있다(S440). 제어기(10)는 에러 메시지의 트랜잭션 식별자(xid)의 메시지 타입으로 어느 메시지 타입의 에러인지 및 어느 엔트리에서 에러가 발생하였는지를 신속하게 파악할 수 있다.
도 11은 제어기(10)에서 수신한 오픈플로우 메시지 헤더의 메시지 타입을 구비하지 않은 도 8(b)와 같은 트랜잭션 식별자(xid)의 엔트리 식별자 또는 메시지 타입을 포함하는 트랜잭션 식별자(xid) 중 메시지 타입을 제거한 엔트리 식별자를 테이블에 삽입한 이후에 에러가 발생한 경우, 오픈플로우 스위치(20)의 에러 처리에 관한 순서도이다.
도 11을 참조하면, 오픈플로우 스위치(20)에서 패킷 처리 중 에러가 발생하면(S510), 오픈플로우 스위치(20)의 에러 관리 모듈(280)은 에러와 관련된 엔트리를 탐색할 수 있다(S515). 에러 관리 모듈(280)는 에러 타입을 판단할 수 있다(S520). 에러 타입이 판단 가능한 경우, 에러 관리 모듈(280)는 해당 에러 타입 및 해당 엔트리 식별자를 트랜잭션 식별자(xid)로 생성하고(S530), 생성된 트랜잭션 식별자(xid)를 에러 메시지 헤더의 일부로 하여 해당 에러 메시지를 제어기(10)로 전송할 수 있다(S540). 에러 타입 판단이 불가능한 경우, 에러 관리 모듈(280)은 디폴트 에러 타입 코드 및 해당 엔트리 식별자를 트랜잭션 식별자(xid)로 생성하고(S535), 생성된 트랜잭션 식별자(xid)를 에러 메시지 헤더의 일부로 하여 해당 에러 메시지를 제어기(10)로 전송할 수 있다(S540). 제어기(10)는 에러 메시지의 트랜잭션 식별자(xid)의 메시지 타입으로 어느 메시지 타입의 에러인지 및 어느 엔트리에서 에러가 발생하였는지를 신속하게 파악할 수 있다.
본 실시예에서, 에러 타입 또는 메시지 타입은 디폴트는 00, 플로우 테이블은 01, 그룹 테이블은 10, 및 미터 테이블은 11으로 정의할 수 있으며, 이에 의해 에러 타입 또는 메시지 타입은 2비트가 사용될 수 있다. 다만 이에 한정되지 않고, 에러 타입의 경우의 수에 따라, 에러 타입 비트는 증가될 수 있다.
상기 본 발명은 하드웨어 또는 소프트웨어에서 구현될 수 있다. 구현은 상기 본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명의 실시예들은 여기에 설명된 방법들 중 하나가 실행되는 프로그램가능 컴퓨터 시스템으로 운영될 수 있는, 전자적으로 판독가능한 제어 신호들을 갖는 캐리어 웨이브를 포함할 수 있다. 본 발명의 실시예들은 프로그램 코드를 갖는 컴퓨터 프로그램 제품으로서 구현될 수 있으며, 프로그램 코드는 컴퓨터 프로그램이 컴퓨터 상에서 구동될 때 방법들 중 하나를 실행하기 위하여 운영된다. 프로그램 코드는 예를 들면 기계 판독가능 캐리어 상에 저장될 수 있다. 본 발명의 일실시예는 컴퓨터 프로그램이 컴퓨터 상에 구동될 때, 여기에 설명된 방법들 중 하나를 실행하기 위한 프로그램 코드를 갖는 컴퓨터 프로그램일 수 있다. 본 발명은 위에서 설명한 방법들 중 하나를 실행하기 위한 컴퓨터, 또는 프로그램가능 논리 장치를 포함할 수 있다. 위에서 설명한 방법들의 일부 또는 모든 기능을 실행하기 위하여 프로그램가능 논리 장치(예를 들면, 필드 프로그램가능 게이트 어레이, 상보성 금속 산화물 반도체 기반 논리 회로)가 사용될 수 있다.
또한, 이상에서는 본 발명의 바람직한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안 될 것이다.
100: 제어부 110: 스위치 통신부
190: 저장부 200: 제어부
205: 포트부 210: 제어기 통신부
290: 저장부

Claims (13)

  1. 데이터를 송수신하는 복수의 네트워크 디바이스 간의 플로우 송수신을 중계하며, 상기 플로우 송수신의 중계를 위한 테이블을 구비하는 오픈플로우 스위치; 및
    상기 오픈플로우 스위치의 테이블에 엔트리를 추가, 수정, 및 삭제 중 적어도 하나가 실행되도록 하는 테이블 변경 메시지를 상기 오픈플로우 스위치에 전송하는 제어기를 포함하고,
    상기 제어기는 상기 엔트리를 식별할 수 있는 엔트리 식별자를 생성하여 상기 엔트리와 연관되도록 하고, 상기 테이블 변경 메시지에 상기 엔트리 식별자를 구비하도록 하고,
    상기 오픈플로우 스위치의 테이블의 엔트리는 엔트리 식별자와 대응하는 필드를 구비하여, 상기 필드에 상기 테이블 변경 메시지에 구비된 상기 엔트리 식별자를 저장하고,
    상기 오픈플로우 스위치는 플로우 송수신 중 에러가 발생한 경우, 상기 에러와 연관된 엔트리의 엔트리 식별자를 구비한 에러 메시지를 상기 제어기로 송신하는, 네트워크 시스템.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서,
    상기 오픈플로우 스위치는 상기 에러와 관련된 타입을 식별하여, 상기 식별된 에러 타입과 관련된 에러 타입 코드를 상기 에러 메시지에 삽입하는, 네트워크 시스템.
  5. 제 4 항에 있어서,
    상기 제어기는 상기 에러 메시지의 에러 타입 코드 및 엔트리 식별자 중 적어도 하나를 이용하여 에러 처리하는, 네트워크 시스템.
  6. 제 1 항에 있어서,
    상기 엔트리 식별자는 상기 테이블의 타입에 따른 타입 코드를 구비하는, 네트워크 시스템.
  7. 제 6 항에 있어서,
    상기 제어기는 상기 테이블 변경 메시지에 대응하는 에러 메시지에 구비된 엔트리 식별자를 이용하여 에러 처리하는, 네트워크 시스템.
  8. 제 1 항에 있어서,
    상기 제어기는 엔트리 식별자를 관리하는 엔트리 식별자 테이블을 구비하는, 네트워크 시스템.
  9. 제 1 항에 있어서,
    상기 엔트리 식별자는 상기 테이블 변경 메시지의 헤더의 트랜잭션 식별자에 삽입되는, 네트워크 시스템.
  10. 제 1 항에 있어서,
    상기 엔트리 식별자는 상기 에러 메시지의 헤더의 트랜잭션 식별자에 삽입되는, 네트워크 시스템.
  11. 제 1 항에 있어서,
    상기 테이블 변경 메시지의 트랜잭션 식별자는 변경될 엔트리가 속한 테이블의 타입과 관련된 코드 및 엔트리 식별자를 구비하고,
    상기 에러 메시지의 트랜잭션 식별자는 에러와 관련된 엔트리가 속한 테이블의 타입과 관련된 코드 및 엔트리 식별자를 구비하는, 네트워크 시스템.
  12. 제 4 항에 있어서,
    상기 테이블 변경 메시지의 트랜잭션 식별자는 엔트리 식별자를 구비하고, 상기 테이블 변경 메시지의 트랜잭션 식별자의 크기는 상기 에러 타입 코드의 크기 및 상기 엔트리 식별자의 크기의 합과 동일하거나 보다 크고,
    상기 에러 메시지의 트랜잭션 식별자는 상기 에러 타입 코드 및 엔트리 식별자를 구비하는, 네트워크 시스템.
  13. 제 8 항에 있어서,
    상기 제어기는 상기 오픈플로우 스위치에 엔트리 삭제 메시지를 송신하거나 상기 오픈플로우 스위치로부터 엔트리 소멸 메시지를 수신한 경우, 관련된 엔트리 식별자를 상기 엔트리 식별자 테이블에서 삭제하는, 네트워크 시스템.
KR1020140166811A 2014-11-26 2014-11-26 Sdn 기반의 에러 탐색 네트워크 시스템 KR101707073B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140166811A KR101707073B1 (ko) 2014-11-26 2014-11-26 Sdn 기반의 에러 탐색 네트워크 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140166811A KR101707073B1 (ko) 2014-11-26 2014-11-26 Sdn 기반의 에러 탐색 네트워크 시스템

Publications (2)

Publication Number Publication Date
KR20160063155A KR20160063155A (ko) 2016-06-03
KR101707073B1 true KR101707073B1 (ko) 2017-02-15

Family

ID=56192390

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140166811A KR101707073B1 (ko) 2014-11-26 2014-11-26 Sdn 기반의 에러 탐색 네트워크 시스템

Country Status (1)

Country Link
KR (1) KR101707073B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107786495A (zh) * 2016-08-24 2018-03-09 北京计算机技术及应用研究所 云环境网络安全防护系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130163427A1 (en) * 2011-12-22 2013-06-27 Ludovic Beliveau System for flexible and extensible flow processing in software-defined networks

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102055686B1 (ko) * 2012-10-19 2019-12-13 에스케이텔레콤 주식회사 오픈 플로우 스위치와 컨트롤러를 사용한 가상망 구현 방법 및 그 장치
KR20140106235A (ko) * 2013-02-26 2014-09-03 한국전자통신연구원 오픈플로우 스위치 및 그 패킷 처리 방법
KR20140125898A (ko) * 2013-04-18 2014-10-30 한국전자통신연구원 소프트웨어 정의 네트워킹 망에서 긴급 트래픽 전달 방법 및 이를 수행하는 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130163427A1 (en) * 2011-12-22 2013-06-27 Ludovic Beliveau System for flexible and extensible flow processing in software-defined networks

Also Published As

Publication number Publication date
KR20160063155A (ko) 2016-06-03

Similar Documents

Publication Publication Date Title
KR101703088B1 (ko) Sdn 기반의 통합 라우팅 방법 및 그 시스템
US9654395B2 (en) SDN-based service chaining system
KR101803332B1 (ko) 사물 인터넷 네트워크 시스템
Hyun et al. Real‐time and fine‐grained network monitoring using in‐band network telemetry
US20150341267A1 (en) Control apparatus, communication apparatus, communication system, switch control method, and program
KR101527377B1 (ko) Sdn 기반의 서비스 체이닝 시스템
KR101746105B1 (ko) 서비스 체이닝이 가능한 오픈플로우 스위치
WO2018150223A1 (en) A method and system for identification of traffic flows causing network congestion in centralized control plane networks
KR20180058594A (ko) Sdn/tap 어플리케이션
KR101797112B1 (ko) 컨테이너 네트워크 관리 시스템
KR101729944B1 (ko) Sdn 기반의 멀티 테넌트 지원 네트워크 시스템의 ip 주소 제공 방법
US9356876B1 (en) System and method for classifying and managing applications over compressed or encrypted traffic
KR20180058592A (ko) Sdn 제어기
KR101797115B1 (ko) 컨테이너 네트워크의 컨테이너 네트워킹 방법
US20120170581A1 (en) Policy homomorphic network extension
KR101679224B1 (ko) Sdn 기반의 트래픽 분배 가능한 네트워크 시스템
KR101707073B1 (ko) Sdn 기반의 에러 탐색 네트워크 시스템
JP2017050708A (ja) 通信システム、制御装置、スイッチ、通信方法及びプログラム
KR20180058593A (ko) Sdn 화이트박스 스위치
KR101729945B1 (ko) Sdn 기반의 네트워크 시스템의 멀티 테넌트 지원 방법
KR101729939B1 (ko) Sdn 기반의 멀티 테넌트 지원 네트워크 시스템
US9912575B2 (en) Routing network traffic packets through a shared inline tool
KR20170006950A (ko) Sdn 기반의 네트워크 플랫트닝 시스템 및 그 방법
KR101739097B1 (ko) 오픈플로우 스위치의 서비스 체이닝 방법
KR101739100B1 (ko) 서비스 체이닝 가능한 오픈플로우 스위치 제어 방법 및 그 제어기

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200130

Year of fee payment: 4