KR102226915B1 - 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법, 장치 및 컴퓨터 프로그램 - Google Patents
소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법, 장치 및 컴퓨터 프로그램 Download PDFInfo
- Publication number
- KR102226915B1 KR102226915B1 KR1020190137601A KR20190137601A KR102226915B1 KR 102226915 B1 KR102226915 B1 KR 102226915B1 KR 1020190137601 A KR1020190137601 A KR 1020190137601A KR 20190137601 A KR20190137601 A KR 20190137601A KR 102226915 B1 KR102226915 B1 KR 102226915B1
- Authority
- KR
- South Korea
- Prior art keywords
- flow
- switch
- flow rule
- rule
- match field
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/02—Standardisation; Integration
- H04L41/024—Standardisation; Integration using relational databases for representation of network management data, e.g. managing via structured query language [SQL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
본 발명의 실시예를 따라 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법은, 컨트롤러에서, 상기 네트워크에 포함된 스위치 식별정보를 기록한 제 1 테이블, 상기 스위치 각각에 적용된 플로우 테이블 식별 정보를 기록한 제 2 테이블 및 상기 네트워크에 적용할 수 있는 플로우 룰의 모든 매치 필드 항목을 미리 설정된 코드 값을 이용하여 기록한 제 3 테이블을 생성하는 a 단계; 상기 매치 필드의 내용을 기록하기 위한 제 4 테이블 및 상기 플로우 룰의 인스트럭션을 기록하기 위한 제 5 테이블을 생성하는 b 단계; 상기 네트워크에 적용할 플로우 룰이 생성되면, 상기 플로우 룰의 매치 필드 항목을 상기 제 3 테이블에서 검색하는 c 단계; 상기 제 3 테이블에서 검색된 매치 필드 항목에 연결된 상기 제 4 테이블의 임의의 영역에 상기 플로우 룰의 매치 필드 내용을 기록하는 d 단계를 포함하는 것을 특징으로 한다.
Description
본 발명은 소프트웨어 정의 네트워크를 제어하는 방법 및 장치에 대한 것이다. 보다 구체적으로 본 발명은 소프트웨어 정의 네트워크에서 컨트롤러의 저장소에 저장된 플로우 룰 데이터베이스를 효율적으로 운영할 수 있는 방법 및 장치에 대한 것이다.
소프트웨어 정의 네트워킹 (Software Defined Networking, 이하 SDN이라 칭함)은 네트워크의 모든 네트워크 장비를 지능화된 중앙관리시스템에 의해 관리하는 기술을 의미한다. SDN 기술에서는 기존 하드웨어 형태의 네트워크 장비에서 자체적으로 수행하는 패킷 처리와 관련된 제어 동작을 소프트웨어 형태로 제공되는 컨트롤러가 대신하여 처리함으로써, 기존의 네트워크 구조보다 다양한 기능을 개발하고 부여할 수 있다는 장점을 갖는다.
SDN 시스템은 일반적으로 전체 네트워크를 제어하는 컨트롤러 서버, 상기 컨트롤러 서버에 의해 제어되며 패킷을 처리하는 복수의 오픈플로우 스위치, 및 오픈플로우 스위치의 하위 계층에 해당하는 호스트를 포함하여 구성될 수 있다.
오픈플로우 스위치는 패킷의 송수신 기능만을 담당하며, 패킷의 경로 설정, 관리 및 제어는 모두 컨트롤러 서버에서 이루어진다. 즉, 네트워크 장비를 이루는 데이터 플레인(Data Plane)과 콘트롤 플레인(Control Plane)을 분리하는 것이 SDN 시스템의 기본 구조라 볼 수 있다.
OpenFlow Switch Specification Version 1.5.0 (2014.12.19)
본 발명은 SDN 환경에서 플로우 룰을 저장하는 데이터베이스를 효율적으로 운영할 수 있는 방법 및 장치를 제공하는 것을 목적으로 한다. 나아가 본 발명은 스위치의 플로우 테이블과 저장소의 플로우 룰 데이터베이스의 동기화를 보장하는 방법 및 장치를 제공하는 것을 목적으로 한다.
본 발명의 실시예를 따르는 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법은, 컨트롤러에서, 상기 네트워크에 포함된 스위치 식별정보를 기록한 제 1 테이블, 상기 스위치 각각에 적용된 플로우 테이블 식별 정보를 기록한 제 2 테이블 및 상기 네트워크에 적용할 수 있는 플로우 룰의 모든 매치 필드 항목을 미리 설정된 코드 값을 이용하여 기록한 제 3 테이블을 생성하는 a 단계; 상기 매치 필드의 내용을 기록하기 위한 제 4 테이블 및 상기 플로우 룰의 인스트럭션을 기록하기 위한 제 5 테이블을 생성하는 b 단계; 상기 네트워크에 적용할 플로우 룰이 생성되면, 상기 플로우 룰의 매치 필드 항목을 상기 제 3 테이블에서 검색하는 c 단계; 상기 제 3 테이블에서 검색된 매치 필드 항목에 연결된 상기 제 4 테이블의 임의의 영역에 상기 플로우 룰의 매치 필드 내용을 기록하는 d 단계를 포함하는 것을 특징으로 한다.
본 발명에 따르면 SDN 환경에서 저장소의 플로우 룰 데이터베이스를 효율적으로 운영할 수 있다. 보다 구체적으로 본 발명의 실시예를 따르면, 플로우 룰 데이터베이스에 IPv6, MPLS의 규격에 따르는 모든 코드를 기록하거나 또는 플로우 룰을 별도로 정의할 필요없이 플로우 모드 메시지를 그대로 데이터베이스에 저장할 수 있다. 이에 따르면, 데이터베이스를 위한 메모리 공간을 줄일 수 있으며, 서치, 락킹 (Locking)을 위한 대기, 및 플로우 룰 변환 등에 소비되는 오버헤드를 줄일 수 있는 효과가 있다.
나아가 본 발명에 따르면, 스위치의 플로우 테이블과 저장소의 플로우 룰 데이터베이스의 동기화가 보장되어 네트워크 운영의 신뢰도 및 통신장애에 대비한 내구성이 높아지는 효과가 있다.
도 1은 소프트웨어 정의 네트워크의 구성을 설명하기 위한 도면
도 2는 플로우 룰 유실의 문제점을 설명하기 위한 도면
도 3은 본원발명의 실시예를 따르는 컨트롤러의 룰싱크 어플리케이션을 포함하는 아키텍처에 대해 설명하기 위한 도면
도 4는 본 발명의 실시예를 따라 룰싱크 어플리케이션에서 스위치와 저장소의 플로우 룰의 동기화를 수행하는 방법을 설명하기 위한 도면
도 5는 본 발명의 실시예를 따라 플로우 룰 데이터베이스를 운영하는 예시를 설명하기 위한 도면
도 6은 본 발명의 실시예를 따라 플로우 룰 데이터베이스를 운영하는 방법을 설명하기 위한 순서도
도 2는 플로우 룰 유실의 문제점을 설명하기 위한 도면
도 3은 본원발명의 실시예를 따르는 컨트롤러의 룰싱크 어플리케이션을 포함하는 아키텍처에 대해 설명하기 위한 도면
도 4는 본 발명의 실시예를 따라 룰싱크 어플리케이션에서 스위치와 저장소의 플로우 룰의 동기화를 수행하는 방법을 설명하기 위한 도면
도 5는 본 발명의 실시예를 따라 플로우 룰 데이터베이스를 운영하는 예시를 설명하기 위한 도면
도 6은 본 발명의 실시예를 따라 플로우 룰 데이터베이스를 운영하는 방법을 설명하기 위한 순서도
본 발명은 이하에 기재되는 실시예들의 설명 내용에 한정되는 것은 아니며, 본 발명의 기술적 요지를 벗어나지 않는 범위 내에서 다양한 변형이 가해질 수 있음은 자명하다. 그리고 실시예를 설명함에 있어서 본 발명이 속하는 기술 분야에 널리 알려져 있고 본 발명의 기술적 요지와 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다.
한편, 첨부된 도면에서 동일한 구성요소는 동일한 부호로 표현된다. 그리고 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시될 수도 있다. 이는 본 발명의 요지와 관련이 없는 불필요한 설명을 생략함으로써 본 발명의 요지를 명확히 설명하기 위함이다. 이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다.
본 발명의 명세서에서 “플로우 룰”의 용어는 해당 업계의 통상의 기술자 입장에서 소프트웨어 정의 네트워크에서 컨트롤러 서버가 적용하는 네트워크 정책을 의미하는 것으로 이해되어야 한다.
나아가 본 발명의 명세서에서 플로우 테이블, 플로우 룰 데이터베이스의 변경(updating)은 테이블 및/또는 데이터베이스를 구성하는 엔트리의 추가(add), 삭제(delete) 및/또는 수정(modify)을 포함하는 개념으로 이해될 수 있다.
나아가 본 명세서에서 오픈플로우 스위치(200)는 오픈플로우 프로토콜만을 지원하는 스위치, 오픈플로우 프로토콜을 지원하는 가상 스위치, 오픈플로우 프로토콜을 지원하는 일반적인 L2 스위치를 포함하는 개념으로 이해될 수 있다.
도 1은 소프트웨어 정의 네트워크의 구성을 설명하기 위한 도면이다. 도 1을 참조하면, 소프트웨어 정의 네트워크(Software Defined Network)는 컨트롤러 서버(100), 네트워크 장비(200) 및 호스트(300)를 포함할 수 있다. 네트워크 장비(200)와 호스트(300)는 노드(Node)라고 지칭할 수 있으며, 링크(Link)는 2개의 노드 사이의 연결을 의미할 수 있다.
컨트롤러 서버(100)는 네트워크 장비(200)를 관리하는 기능을 하는 것으로, 복수의 네트워크 장비(200)를 중앙 집중형으로 관리 및 제어한다. 구체적으로 컨트롤러 서버(100)는 토폴로지 관리(Topology management), 패킷 처리와 관련된 경로 관리(Path management), 링크 디스커버리(Link discovery), 패킷 흐름인 플로우 관리(Flow management) 등의 기능을 하는 응용 프로그램이 탑재된 형태로 구현될 수 있다.
네트워크 장비(200)는 컨트롤러 서버(100)의 제어에 따라 패킷을 처리하는 기능을 한다. 네트워크 장비(200)의 예로는 이동 통신 기지국, 기지국 제어기, 게이트웨이 장비, 유선 네트워크의 스위치, 라우터 등이 있다. 다만 설명의 편의를 위해 이하에서는 네트워크 장비(200)가 오픈플로우 스위치인 경우를 중심으로 설명하도록 한다.
소프트웨어 정의 네트워크에서 컨트롤러 서버(100)와 오픈플로우 스위치(200)는 상호간 정보를 주고 받아야 하며, 이를 위한 프로토콜로 널리 사용되는 것이 오픈플로우 (OpenFlow) 프로토콜이다. 즉, 오픈플로우 프로토콜은 컨트롤러 서버(100)와 오픈플로우 스위치(200)간 서로 통신할 수 있는 표준 규격이다.
오픈플로우 프로토콜을 따르면, 스위치(200)는 컨트롤 채널(Control Channel)을 통해 컨트롤러 서버(100)와 정보를 교환하고, 파이프라인(Pipeline) 프로세싱을 위한 하나 이상의 플로우 테이블(Flow table), 그룹 테이블, 미터 테이블 및/또는 패킷 전달을 위한 네트워크 인터페이스로 하나 이상의 포트를 가질 수 있다.
스위치의 플로우 테이블, 그룹 테이블, 미터 테이블 및/또는 포트는 컨트롤러 서버(100)의 제어에 의해 변경될 수 있다. 보다 구체적으로 컨트롤러 서버는 변경 메시지(Mod Message)를 오픈플로우 스위치(200)에게 전송하여 스위치를 변경할 수 있다. 본 명세서에서 스위치의 변경은 해당 스위치의 플로우 테이블, 그룹 테이블, 미터 테이블 및/또는 포트 등에 대한 변경을 포함하는 개념이다.
그런데 현재의 SDN 구조에서는 플로우 룰의 유실 등의 이유로 저장소의 플로우 룰 데이터베이스와 스위치의 플로우 테이블의 원자성을 보장할 수 없는 문제가 있다.
예를 들어 도 2에 도시된 SDN 아키텍처의 예에서, 어플리케이션 레이어 210에 속하는 임의의 어플리케이션에서 컨트롤 레이어 220를 통해 인프라스트럭쳐 레이어 230에 속하는 임의의 스위치에 대한 플로우 룰을 변경하는 경우를 고려할 수 있다. 이 경우 플로우 룰 유실은 크게 4가지 경우에서 발생할 수 있다.
첫째로 어플리케이션에 할당된 큐가 가득차서 플로우 룰 유실이 발생하는 경우이다. 둘째로 TCP 소켓 큐가 가득차서 플로우 룰 유실이 발생할 수 있다. 셋째로 컨트롤러 큐가 가득차거나, 넷째로 스위치의 CPU, 큐 등의 자원 부족에 의한 플로우 룰 유실이 발생할 수 있다. 그러나 어플리케이션은 플로우 룰이 유실되지 않고 해당 스위치에 적용되었는지 여부와 무관하게 저장소(240)에 플로우 룰 변경사항을 기록하게 된다.
이와 같이 현재의 SDN 구조에서는 스위치에 적용된 플로우 룰과 저장소의 플로우 룰 데이터베이스의 원자성이 보장되지 않는 문제가 있다. 즉, 스위치 변경 사항과 저장소의 플로우 룰 데이터베이스 변경 사항의 동기화가 보장되지 않기 때문에, 경로 계산의 신뢰성이 낮아지고, 이는 특히 고도의 보안이 요구되는 네트워크 환경에서 큰 문제가 될 수 있다.
따라서 본 발명의 실시예를 따르는 컨트롤러는 저장소의 플로우 룰 데이터베이스와 스위치의 플로우 테이블을 동기화하는 기능을 수행하는 어플리케이션을 운영할 수 있다.
도 3은 본원발명의 실시예를 따르는 컨트롤러의 룰싱크 어플리케이션을 포함하는 아키텍처에 대해 설명하기 위한 도면이다.
본 발명의 실시예를 따르면, 컨트롤러는 저장소 340의 플로우 룰 데이터베이스와 데이터패스, 즉 스위치에 적용된 플로우 테이블의 동기화를 위한 룰 싱크 어플리케이션 360을 운용할 수 있다.
이를 위하여 어플리케이션 레이어에 속하는 다른 어플리케이션 350은 플로우 모드 메시지를 스위치 330에 전송하기 전에 상기 플로우 모드 메시지의 내용을 저장소 340의 플로우 룰 데이터베이스에 저장하도록 동작할 수 있다.
한편, 룰 싱크 어플리케이션 360은 임의의 주기로 FLOW_STATS_REQUEST메시지를 이용하여 스위치에 적용된 플로우 테이블의 내용을 확인하고, 저장소 340에 접근하여 플로우 룰 데이터베이스를 조회하도록 기능할 수 있다. 이후 룰 싱크 어플리케이션은 스위치에 적용된 플로우 테이블과 저장소의 데이터베이스의 내용을 일치시키도록 기능할 수 있다
보다 구체적으로, 룰 싱크 어플리케이션 360은 저장소의 플로우 룰 데이터베이스와 스위치의 플로우 테이블의 내용이 일치하는 경우, 동기화를 위하여 저장소의 해당 플로우 룰의 타임 스템프를 업데이트할 수 있다. 그런데, 스위치의 특정 플로우 룰의 만료 시간 (expire time)이 종료된 경우라면, 플로우 모드 메시지를 이용하여 해당 룰을 스위치에 다시 적용(add)할 수 있다.
한편, 룰 싱크 어플리케이션 360은 저장소의 플로우 룰 데이터베이스에 존재하는 룰이 스위치의 플로우 테이블에는 적용되어 있지 않은 경우, 플로우 모드 메시지를 이용하여 해당 룰을 스위치에 추가 (add)할 수 있다. 나아가 저장소의 플로우 룰 데이터베이스에 존재하지 않는 룰이 스위치의 플로우 테이블에는 적용되어 있는 경우, 해당 스위치에 플로우 룰을 삭제 (delete) 하도록 플로우 모드 메시지를 전송할 수 있다.
도 4는 본 발명의 실시예를 따르는 SDN에서 룰싱크 어플리케이션이 동작하여 스위치와 저장소의 플로우 룰의 동기화하는 방법을 설명하기 위한 도면이다.
임의의 시점에 해당 SDN에 적용된 플로우 룰에 대한 데이터베이스가 저장소 (416)에 저장되고 (단계 425) 특정 스위치 (410)에 플로우 테이블이 저장되어 있는 상태에서 (단계 420) 컨트롤러의 임의의 어플리케이션 (414)의 동작으로 스위치 410에 플로우 룰 A를 추가하는 경우를 고려할 수 있다. (단계 350)
본 발명의 실시예를 따르면, 어플리케이션 414은 스위치 410에 플로우 룰 A를 추가하기 위한 플로우 모드 메시지를 전송하기 전에, 저장소 416에 접근하여 플로우 룰 A를 기록(write)하고 (단계 440) 이후 플로우 룰 A를 추가하는 플로우 모드 메시지를 스위치에 전송할 수 있다. (단계 435) 추가된 플로우 룰은 저장소 416의 데이터베이스에 반영되고, (단계 345) 스위치 410의 플로우 테이블에 반영될 것이다. (단계 450)
이때 룰싱크 어플리케이션 412은 임의의 주기로 저장소에 접근하여 플로우 룰을 조회하고 (단계 455) FLOW_STATS_REQUEST메시지를 이용하여 스위치의 플로우 테이블의 내용을 조회할 수 있다. (단계 460)
이때, 플로우 룰 A가 유실되지 않고 스위치와 저장소에 모두 적용되어 있는 경우, 룰 싱크 어플리케이션 412은 동기화를 위하여 저장소의 해당 플로우 룰의 타임 스템프를 업데이트할 수 있다. (단계 465) 그런데, 스위치에 플로우 룰 A의 만료 시간 (expire time)이 종료된 경우라면, 플로우 모드 메시지를 이용하여 해당 룰을 스위치에 다시 적용(add)할 수 있다. (단계 470)
한편, 룰 싱크 어플리케이션 412는 플로우 룰 A가 유실되어 스위치의 플로우 테이블에는 적용되어 있지 않으면, 플로우 모드 메시지를 이용하여 해당 룰을 스위치에 추가 (add)할 수 있다. 다만 플로우 룰 A가 저장소 416의 데이터베이스에만 유실되어 있는 경우, 동기화를 위하여 스위치 410에 플로우 룰을 삭제 (delete) 하도록 플로우 모드 메시지를 전송할 수 있다.
그런데, 현재의 SDN 저장소의 플로우 룰 데이터베이스의 데이터는 오픈플로우 패킷과 데이터 형태가 상이하다. 저장소에서는 IPv6, MPLS 프로토콜을 지원하기 위하여 상기 프로토콜에서 요구하는 모든 코드가 정의되어야 하기 때문이다. 예를 들어 <Priority 1로 패킷을 drop>하도록 스위치를 설정하는 간단한 플로우 룰이라고 하더라도, 저장소에 기록되는 것은 아래의 표 1에 미리 정의된 코드에 따라 작성된 표 2와 같은 형태의 데이터이다.
그러나 모든 룰에 대해 이와 같은 데이터를 저장하는 것은 메모리 공간의 상당한 오버헤드가 된다. 나아가 오픈플로우 패킷과 SDN 저장소의 플로우 룰 데이터베이스의 데이터 형태가 상이하기 때문에, 어플리케이션 레벨에서 플로우 룰을 저장소에 저장하거나, 저장소에 저장된 데이터베이스를 참고하기 위해서는 데이터 변환 기능이 추가적으로 요구된다. 그리고 본 발명의 실시예에 따라 룰싱크 어플리케이션을 운용하기 위해서는 각각의 플로우 룰에 대해 저장소의 데이터베이스를 검색하게 되는데, 전체 코드를 검색해야 하기 때문에 전체 시스템에 상당한 오버헤드가 되는 문제가 발생한다.
따라서 본 발명의 실시예를 따르는 컨트롤러는 별도의 필드를 새로 정의할 필요없이 플로우 룰 메시지를 그대로 저장하도록 저장소를 운용할 수 있다.
보다 구체적으로 본 발명의 실시예를 따르는 컨트롤러는 저장소의 플로우 룰 데이터베이스를 위하여 스위치의 식별 정보에 대한 제 1 테이블, 각각의 스위치에 적용된 플로우 테이블 식별 정보에 대한 제 2 테이블, 플로우 룰의 매치 필드를 기록하는 제 3 테이블, 나아가 플로우 룰의 인스트럭션의 내용을 기록하는 제 4 테이블을 운용할 수 있다.
이때, 상기 제 3 테이블은 플로우 룰의 매치 항목 세트를 비트 어레이로 표현하고, 상기 비트 어레이에 대한 해쉬값으로 상기 매치 항목 세트의 식별 정보를 표현할 수 있다. 나아가 상기 제 3 테이블은 상기 매치 항목 세트의 내용을 기록한 서브 테이블과 연결될 수 있다.
이후 컨트롤러는 상기 제 1 테이블 내지 제 4 테이블 및 상기 서브 테이블을 이용하여 플로우 룰의 내용을 기록할 수 있다.
도 5는 본 발명의 실시예를 따라 플로우 룰 데이터베이스를 운영하는 예시를 설명하기 위한 도면이다.
도 5의 예에서 테이블 522는 네트워크에 대한 스위치 식별정보를 기록한 테이블이며, 테이블 523은 스위치 10073012046에 적용된 플로우 테이블 식별 정보를 기록하는 테이블이다. 따라서 테이블 522의 552 행은 테이블 523과 연결되어 있다. 나아가 536은 스위치 식별정보 10073012046의 제 30 플로우 테이블에 적용되는 플로우 룰의 매치 필드를 기록하는 테이블이며, 556은 플로우 룰의 인스트럭션을 기록하는 테이블이다.
예를 들어 도 5의 예에서 컨트롤러의 어플리케이션이 510과 같은 플로우 룰을 저장소의 데이터베이스에 기록하는 경우를 고려할 수 있다. 상기 플로우 룰 510이 스위치 ID (512) 10073012046의 플로우 테이블 ID 30 (513)에 대한 것이기 때문에, 어플리케이션은 테이블 522에서 스위치 ID 10073012046 (552)를 검색하고, 552에 연결된 테이블 523을 확인할 것이다. 이후 어플리케이션은 테이블 523에서 테이블 ID 30 (553)을 검색하고, 553에 연결된 테이블 536 및 556을 확인할 것이다.
이후 어플리케이션은 플로우 룰 510의 타입 (514)이 플로우 룰 추가이기 때문에 매치 필드 (516) 및 인스트럭션 (517)의 내용을 테이블 536 및 556에 기록할 것이다.
보다 구체적으로 본 발명의 실시예를 따르는 어플리케이션은 플로우 룰 510의 매치 필드 516의 항목, 즉, dst-mac, dst-ip 및 vlan을 추출하고, 이를 전술한 표 1의 코드값을 이용하여 64 비트 어레이 (526)로 변환할 수 있다. 이후 매치 필드의 항목에 대한 비트 어레이 526에 해쉬 함수를 적용하여 해쉬값을 추출하고 이를 이용하여 테이블 536에 해쉬값에 해당하는 항목을 검색할 수 있다. 본 발명의 실시예와 같이 매치 필드 항목에 해쉬함수를 적용하면 검색의 오버로드가 줄어드는 효과가 있다.
도 5의 예에서, 비트 어레이 526의 해쉬값이 2인 경우, 테이블 536의 식별번호 2인 546행은 실질적으로 플로우 룰의 매치 필드의 항목이 dst-mac, dst-ip 및 vlan (548)임을 의미할 것이다. 이후 어플리케이션은 546에 연결된 서브 테이블 556의 566행에 매치 필드의 내용인 gwA, netB, netA를 기록할 수 있다. 나아가 어플리케이션은 566에 연결된 인스트럭션 테이블 527에 플로우 룰 510의 인스트럭션인 mod-vlan : {netB}, goto : 40을 기록할 수 있다.
이와 같이 저장소의 플로우 룰 데이터베이스를 운영하면, IPv6, MPLS 프로토콜에서 요구하는 모든 코드가 정의되고 지원되지만, 상기 코드에 따르는 형태로 데이터를 저장할 필요없이 오픈플로우 패킷을 그대로 기록할 수 있다. 이를 따르면 메모리 공간을 효율적으로 운영할 수 있고, 별도의 데이터 변환이 요구되지 않으며, 검색에 요구되는 리소스가 줄어들고 검색 속도가 향상되는 효과가 있다.
도 6은 본 발명의 실시예를 따라 플로우 룰 데이터베이스를 운영하는 방법을 설명하기 위한 순서도이다.
단계 610에서 컨트롤러는 네트워크에 포함된 스위치 ID를 기록한 제 1 테이블, 각각의 스위치에 적용된 플로우 테이블 ID를 기록한 제 2 테이블을 생성할 수 있다. 나아가 단계 610에서 컨트롤러는 플로우 룰에 적용할 수 있는 모든 매치 필드 항목을 미리 설정된 코드값을 이용하여 비트 어레이로 변환하고, 상기 비트 어레이에 해쉬 함수를 적용하여 해쉬값을 추출하여 상기 해쉬값으로 매치 필드 항목을 표현한 제 3 테이블을 생성할 수 있다. 나아가 제 1, 2, 3 테이블을 미리 연결할 수 있다.
단계 620에서 컨트롤러는 매치 필드 내용에 대한 제 4 테이블, 인스트럭션에 대한 제 5 테이블을 생성할 수 있다. 네트워크 정책이 결정되어 플로우 룰이 적용되기 전에는 상기 제 4 테이블 및 상기 제 5 테이블은 비워져 있을 수 있다.
이후 컨트롤러는 플로우 룰을 스위치에 적용하기 전에 저장소에 기록할 수 있다. 보다 구체적으로 컨트롤러의 임의의 어플리케이션에서 플로우 룰을 저장소의 데이터베이스에 기록하고자 하는 경우, 상기 플로우 룰의 매치 필드 항목을 미리 설정된 코드 값을 이용하여 비트 어레이로 변환하고, 상기 비트 어레이에 해쉬 함수를 적용하여 해쉬값을 추출할 수 있다. (단계 630)
이후 어플리케이션은 상기 플로우 룰에서 해당 스위치 ID 및 테이블 ID를 확인하고 상기 제 1 테이블 및 상기 제 2 테이블을 검색하고, 검색된 제 1 테이블 및 제 2 테이블에 연결된 제 3 테이블에서 상기 해쉬값을 검색할 수 있다. (단계 640)
이후 어플리케이션은 상기 제 3 테이블에서 검색된 상기 해쉬값에 연결된 상기 제 4 테이블의 임의의 영역에 상기 플로우 룰의 매치 필드 내용을 기록하고, 상기 제 4 테이블의 상기 영역에 연결된 상기 제 5 테이블의 임의의 영역에 상기 플로우 룰의 인스트럭션을 기록할 수 있다.
본 명세서와 도면에 게시된 본 발명의 실시 예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 게시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식 가진 자에게 자명한 것이다.
100 : 컨트롤러 서버
200 : 오픈플로우 스위치
300 : 호스트
200 : 오픈플로우 스위치
300 : 호스트
Claims (8)
- 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법에 있어서,
컨트롤러에서, 상기 네트워크에 포함된 스위치 식별정보를 기록한 제 1 테이블, 상기 스위치 각각에 적용된 플로우 테이블 식별 정보를 기록한 제 2 테이블 및 상기 네트워크에 적용할 수 있는 플로우 룰의 모든 매치 필드 항목을 미리 설정된 코드 값을 이용하여 기록한 제 3 테이블을 생성하는 a 단계;
상기 매치 필드의 내용을 기록하기 위한 제 4 테이블 및 상기 플로우 룰의 인스트럭션을 기록하기 위한 제 5 테이블을 생성하는 b 단계;
상기 네트워크에 적용할 플로우 룰이 생성되면, 상기 플로우 룰의 매치 필드 항목을 상기 제 3 테이블에서 검색하는 c 단계;
상기 제 3 테이블에서 검색된 매치 필드 항목에 연결된 상기 제 4 테이블의 임의의 영역에 상기 플로우 룰의 매치 필드 내용을 기록하는 d 단계를 포함하되,
상기 플로우 룰의 매치 필드 항목을 상기 제 3 테이블에서 검색하는 c 단계는,
상기 플로우 룰의 스위치 ID를 스위치 ID기 기록된 제1 테이블에서 검색하고, 상기 제1 테이블 상에서 검색된 스위치 ID와 연결된 플로우 테이블 ID를 기록한 제2 테이블을 확인하여 상기 플로우 룰에 상응하는 테이블 ID를 검색하고, 상기 테이블 ID와 연결된 플로우 룰의 매치 필드를 기록한 제4 테이블 및 상기 플로우 룰의 인스트럭션을 기록한 제5 테이블을 검색하고, 상기 스위치에 적용할 플로우 룰 타입에 기초하여 플로우 룰의 매치 필드 및 인스트럭션을 상기 제4 및 제5 테이블에 적용하되,
상기 스위치에 적용할 플로우 룰의 매치 필드의 항목을 추출하여, 상기 제3 테이블을 통해 비트 어레이로 변환하고, 상기 매치 필드의 항목에 대한 비트 어레이에 해쉬 함수를 적용하여 해쉬 값을 추출하고, 추출된 해쉬 값을 이용하여 상기 제3 테이블에 해쉬 값에 해당하는 항목을 검색하는 것을 특징으로 하는 데이터베이스 운영 방법. - 제 1 항에 있어서,
상기 제 4 테이블의 상기 영역에 연결된 상기 제 5 테이블의 임의의 영역에 상기 플로우 룰의 인스트럭션을 기록하는 e 단계를 포함하는 것을 특징으로 하는 데이터베이스 운영 방법. - 제 2항에 있어서,
상기 a 단계는,
상기 네트워크에 적용할 수 있는 모든 매치 필드 항목을 상기 코드 값을 이용하여 비트 어레이로 변환하는 단계;
변환된 비트 어레이에 해쉬 함수를 적용하여 해쉬값을 추출하는 단계;
추출된 해쉬 값으로 상기 매치 필드 항목을 표현하여 상기 제 3 테이블을 생성하는 단계를 포함하는 것을 특징으로 하는 데이터베이스 운영 방법. - 제 3 항에 있어서,
상기 a 단계는, 상기 제 1 테이블, 상기 제 2 테이블, 상기 제 3 테이블을 연결하는 단계를 포함하는 것을 특징으로 하는 데이터베이스 운영 방법. - 삭제
- 제 4 항에 있어서,
상기 c 단계는,
상기 플로우 룰을 적용하기 전에, 상기 플로우 룰을 상기 데이터베이스에 기록하고 난 뒤, 상기 플로우 룰을 해당 스위치에 전송하는 단계를 포함하는 것을 특징으로 하는 데이터베이스 운영 방법. - 소프트웨어 정의 네트워크에서 컨트롤러가 플로우 룰을 적용하는 방법에 있어서,
임의의 어플리케이션에서 스위치에 적용될 플로우 룰을 생성한 경우, 상기 어플리케이션에서 상기 플로우 룰을 상기 스위치에 전송하기 전에, 상기 플로우 룰을 저장소의 데이터베이스에 기록하고, 상기 스위치에 상기 플로우 룰을 전송하는 단계;
상기 스위치의 플로우 테이블과 상기 저장소의 데이터베이스의 플로우 룰을 동기화하는 룰 싱크 어플리케이션에, 임의의 주기로 상기 스위치의 플로우 테이블을 조회해서 상기 저장소에 저장된 상기 플로우 룰과 비교하는 단계;
상기 저장소의 상기 플로우 룰의 내용과 상기 스위치의 플로우 테이블이 일치하는 경우, 상기 룰 싱크 어플리케이션에서 상기 저장소의 상기 플로우 룰의 타임 스탬프를 업데이트 하는 단계; 및
상기 저장소의 데이터베이스에 상기 플로우 룰이 존재하나 상기 스위치의 플로우 테이블에는 적용되어 있지 않는 경우, 상기 룰 싱크 어플리케이션에서 상기 스위치에 상기 플로우 룰을 전송하는 단계를 포함하되,
상기 플로우 룰을 저장소의 데이터베이스에 기록하고, 상기 스위치에 상기 플로우 룰을 전송하는 단계는,
임의의 시점에 전송된 복수의 플로우 테이블을 포함하는 플로우 모드 메시지를 그대로 상기 저장소의 데이터베이스에 기록하고,
상기 어플리케이션은 스위치에 적용할 플로우 룰을 상기 저장소의 데이터베이스에 적용하기 위하여, 상기 플로우 룰의 스위치 ID를 스위치 ID기 기록된 제1 테이블에서 검색하고, 상기 제1 테이블 상에서 검색된 스위치 ID와 연결된 플로우 테이블 식별 정보를 기록한 제2 테이블을 확인하여 상기 플로우 룰에 상응하는 테이블 ID를 검색하고, 상기 테이블 ID와 연결된 플로우 룰의 매치 필드를 기록한 제3 테이블 및 상기 플로우 룰의 인스트럭션을 기록한 제4 테이블을 검색하고, 상기 스위치에 적용할 플로우 룰 타입에 기초하여 상기 제3 및 제4 테이블에 적용하되,
상기 스위치에 적용할 플로우 룰의 매치 필드 항목을 추출하여, 상기 네트워크에 적용할 수 있는 플로우 룰의 모든 매치 필드 항목을 미리 설정된 코드 값을 이용하여 기록한 테이블을 통해 비트 어레이로 변환하고, 매치 필드 항목에 대한 비트 어레이에 해쉬 함수를 적용하여 해쉬 값을 추출하고, 추출된 해쉬 값을 이용하여 상기 제3 테이블에 해쉬 값에 해당하는 항목을 검색하는 것을 특징으로 하는 플로우 룰 적용 방법. - 제 7항에 있어서,
상기 저장소의 데이터베이스에 상기 플로우 룰이 존재하지 않고, 상기 스위치의 플로우 테이블에는 적용되어 있는 경우, 상기 룰 싱크 어플리케이션에서 상기 스위치에 상기 플로우 룰을 삭제하도록 제어하는 단계를 포함하는 것을 특징으로 하는 플로우 룰 적용 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190137601A KR102226915B1 (ko) | 2019-10-31 | 2019-10-31 | 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법, 장치 및 컴퓨터 프로그램 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190137601A KR102226915B1 (ko) | 2019-10-31 | 2019-10-31 | 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법, 장치 및 컴퓨터 프로그램 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102226915B1 true KR102226915B1 (ko) | 2021-03-11 |
Family
ID=75142870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190137601A KR102226915B1 (ko) | 2019-10-31 | 2019-10-31 | 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법, 장치 및 컴퓨터 프로그램 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102226915B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114448891A (zh) * | 2022-01-26 | 2022-05-06 | 深圳星云智联科技有限公司 | 流表同步方法、装置、设备和介质 |
US11838197B2 (en) | 2020-10-29 | 2023-12-05 | Samsung Electronics Co., Ltd. | Methods and system for securing a SDN controller from denial of service attack |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101674169B1 (ko) * | 2015-08-17 | 2016-11-08 | 성균관대학교산학협력단 | 오픈플로우 스위치 및 플로우 테이블 관리 방법 |
KR20170010835A (ko) * | 2014-05-27 | 2017-02-01 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 플로우 테이블 관리 방법, 및 관련 디바이스 및 시스템 |
KR101826725B1 (ko) * | 2014-12-23 | 2018-02-07 | 인텔 코포레이션 | 네트워크 장치 흐름 룩업 관리를 위한 기술 |
-
2019
- 2019-10-31 KR KR1020190137601A patent/KR102226915B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170010835A (ko) * | 2014-05-27 | 2017-02-01 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 플로우 테이블 관리 방법, 및 관련 디바이스 및 시스템 |
KR101826725B1 (ko) * | 2014-12-23 | 2018-02-07 | 인텔 코포레이션 | 네트워크 장치 흐름 룩업 관리를 위한 기술 |
KR101674169B1 (ko) * | 2015-08-17 | 2016-11-08 | 성균관대학교산학협력단 | 오픈플로우 스위치 및 플로우 테이블 관리 방법 |
Non-Patent Citations (1)
Title |
---|
OpenFlow Switch Specification Version 1.5.0 (2014.12.19) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11838197B2 (en) | 2020-10-29 | 2023-12-05 | Samsung Electronics Co., Ltd. | Methods and system for securing a SDN controller from denial of service attack |
CN114448891A (zh) * | 2022-01-26 | 2022-05-06 | 深圳星云智联科技有限公司 | 流表同步方法、装置、设备和介质 |
CN114448891B (zh) * | 2022-01-26 | 2024-01-02 | 深圳星云智联科技有限公司 | 流表同步方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106599061B (zh) | 基于SQLite的嵌入式数据库同步方法 | |
US9479323B2 (en) | Communication system, forwarding node, control device, communication control method, and program | |
KR20110071453A (ko) | 지그비 게이트웨이 및 이의 메시지 동일화 방법 | |
CN104601468A (zh) | 报文转发方法和设备 | |
WO2017186159A1 (zh) | 报文传输 | |
CN111010329B (zh) | 一种报文传输方法及装置 | |
CN101902473A (zh) | 基于网格gis的数据同步更新实现方法 | |
KR102226915B1 (ko) | 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법, 장치 및 컴퓨터 프로그램 | |
CN112887229B (zh) | 一种会话信息同步方法及装置 | |
KR101240552B1 (ko) | 미디어 키 관리 및 상기 미디어 키를 이용한 피어-투-피어 메시지 송수신 시스템 및 방법 | |
US20170147448A1 (en) | Network-wide, location-independent object identifiers for high-performance distributed graph databases | |
US20150324387A1 (en) | Broadcast data operations in distributed file systems | |
WO2015006970A1 (zh) | 交换设备、控制器、交换设备配置、报文处理方法及系统 | |
CN112437127A (zh) | 报文处理方法、装置以及负载均衡器和服务器 | |
CN114500633B (zh) | 数据转发方法、相关装置、程序产品及数据传输系统 | |
US20140013007A1 (en) | Access log management method | |
CN109120556B (zh) | 一种云主机访问对象存储服务器的方法及系统 | |
US20120294307A1 (en) | Apparatus and Method for Identifier Management | |
US9686149B2 (en) | Information processing system, relay device, and information processing method | |
US20150019755A1 (en) | Data-centric communications system, node, and data forwarding method | |
KR102420606B1 (ko) | 캐시 경로를 이용하는 패킷 데이터 처리 방법 및 이를 사용하는 전자 장치 | |
US10541914B2 (en) | Data packet forwarding method and network device | |
JP6677052B2 (ja) | 通信管理装置、通信管理方法及びプログラム | |
JP7289303B2 (ja) | ネットワーク通信方法および装置 | |
CN110809033B (zh) | 报文转发方法、装置及交换服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |