KR20190059004A - 소프트웨어 정의 네트워킹 제어 방법 및 이를 수행하는 컴퓨팅 장치 - Google Patents

소프트웨어 정의 네트워킹 제어 방법 및 이를 수행하는 컴퓨팅 장치 Download PDF

Info

Publication number
KR20190059004A
KR20190059004A KR1020170156500A KR20170156500A KR20190059004A KR 20190059004 A KR20190059004 A KR 20190059004A KR 1020170156500 A KR1020170156500 A KR 1020170156500A KR 20170156500 A KR20170156500 A KR 20170156500A KR 20190059004 A KR20190059004 A KR 20190059004A
Authority
KR
South Korea
Prior art keywords
virtual
flow rule
switch
identifier
path tree
Prior art date
Application number
KR1020170156500A
Other languages
English (en)
Other versions
KR102001487B1 (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 KR1020170156500A priority Critical patent/KR102001487B1/ko
Publication of KR20190059004A publication Critical patent/KR20190059004A/ko
Application granted granted Critical
Publication of KR102001487B1 publication Critical patent/KR102001487B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-defined switches
    • H04L49/602Multilayer or multiprotocol switching, e.g. IP switching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/036Updating the topology between route computation elements, e.g. between OpenFlow controllers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/48Routing tree calculation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • 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/252Store and forward routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches

Landscapes

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

Abstract

본 발명은 소프트웨어 정의 네트워킹 제어 방법 및 이를 수행하는 컴퓨팅 장치에 관한 것이다. 본 발명은 컨트롤러가 가상 스위치와 가상 머신을 포함하는 컴퓨팅 노드 및 물리 스위치로 구성된 소프트웨어 정의 네트워킹을 제어하는 방법에 있어서, 상기 컴퓨팅 노드 또는 상기 가상 스위치에 복수개의 가상 식별자를 부여하는 단계, 상기 복수개의 가상 식별자 중 하나인 제1 가상 식별자를 정점으로 하는 제1 경로 트리와 다른 하나인 제2 가상 식별자를 정점으로 하는 제2 경로 트리를 생성하는 단계, 상기 제1 경로 트리에 대응하는 제1 플로우 룰을 생성하고, 상기 제1 플로우 룰의 매칭 조건을 상기 제1 가상 식별자를 이용하여 설정하는 단계, 상기 제2 경로 트리에 대응하는 제2 플로우 룰을 생성하고, 상기 제2 플로우 룰의 매칭 조건을 상기 제2 가상 식별자를 이용하여 설정하는 단계, 상기 제1 플로우 룰과 상기 제2 플로우 룰을 상기 물리 스위치에 전송하는 플로우 룰 전송 단계, 상기 가상 식별자는 패킷 전송에 영향을 미치지 않는 필드 값에 부여되는 가상의 식별자이며, 상기 제1 경로 트리와 상기 제2 경로 트리는 서로 다른 경로를 나타내는 것을 특징으로 한다. 본 발명에 의하면, 플로우 룰 저장 용량에 제한이 없는 가상 스위치의 활용도를 높임으로써, 확장성이 개선된 소프트웨어 정의 네트워킹 제어 방법을 제공할 수 있다.

Description

소프트웨어 정의 네트워킹 제어 방법 및 이를 수행하는 컴퓨팅 장치{METHOD FOR CONTROLLING SOFTWARE DEFINED NETWORKING AND COMPUTING DEVICE PERFORMING THE SAME}
본 발명은 소프트웨어 정의 네트워킹 제어 방법 및 이를 수행하는 컴퓨팅 장치에 관한 것으로, 보다 자세하게는 소프트웨어 스위치와 물리 스위치 계층화를 통해 클라우드 환경에서 소프트웨어 정의 네트워킹의 제어를 최적화 하는 방법, 컨트롤러 및 컴퓨터 프로그램에 관한 것이다.
소프트웨어 정의 네트워킹 (Software Defined Networking, 이하 SDN이라 칭함)은 네트워크의 모든 네트워크 장비를 지능화된 중앙관리시스템에 의해 관리하는 기술을 의미한다. SDN 기술에서는 기존 하드웨어 형태의 네트워크 장비에서 자체적으로 수행하는 패킷 처리와 관련된 제어 동작을 소프트웨어 형태로 제공되는 컨트롤러가 대신하여 처리함으로써, 기존의 네트워크 구조보다 다양한 기능을 개발하고 부여할 수 있다. SDN 시스템은 일반적으로 전체 네트워크를 제어하는 컨트롤러 서버와, 상기 컨트롤러 서버에 의해 제어되며 패킷을 처리하는 복수의 오픈플로우 스위치와, 오픈플로우 스위치의 하위 계층에 해당하는 호스트를 포함하여 구성된다. 여기에서 오픈플로우 스위치는 패킷의 송수신 기능만을 담당하게 되고, 패킷의 경로 설정, 관리 및 제어는 모두 컨트롤러 서버에서 이루어진다. 즉, 네트워크 장비를 이루는 Data Plane과 Control Plane을 분리하는 것이 SDN 시스템의 기본 구조라 볼 수 있다.
한편, 도 1의 소프트웨어 정의 네트워킹 환경에서 물리 스위치(100)와 연결된 컴퓨팅 노드(1000) 각각은 가상 스위치(200)와 하나 이상의 가상 머신(호스트, 300)로 구성될 수 있다. 여기서 물리스위치에는 시스템에 존재하는 가상 머신(300)의 개수에 비례하는 플로우 룰이 저장된다. 만일 플로우 룰이 출발지 IP와 목적지 IP의 조합으로 이루어지면, 플로우 룰의 개수는 가상 머신(300) 개수의 제곱에 비례할 것이다.
일반적으로 물리 스위치(100)는 TCAM(Ternary Content Addressable Memory)을 사용한다. TCAM은 라우팅 테이블 처리 등 매우 빠른 속도를 요하는 탐색 애플리케이션에서 사용되는 내용 주소화 기억장치(CAM)의 일종으로, 이진수(Binary)로 이루어진 검색어 뿐 아니라 X(don’t care)를 허용하여 검색에 있어서 높은 유연성을 제공한다. TCAM은 그 비용이 일반 메모리에 비해 매우 높으며, 이로 인해 용량을 늘리는 것이 쉽지 않다. 따라서 현재 상용화된 TCAM이 저장할 수 있는 플로우 룰의 개수는 최소 약 900여개에서 최대 약 4000개 수준에 불과하여 사용 가능한 플로우 룰의 개수가 제한되는 문제가 있다.
본 발명은 전술한 문제점을 해결하기 위한 것으로서, 플로우 룰 저장 용량에 제한이 없는 가상 스위치의 활용도를 높임으로써, 확장성이 개선된 소프트웨어 정의 네트워킹 제어 방법을 제공하는 것을 일 목적으로 한다.
또한 본 발명은 플로우 룰의 개수를 최적화함으로써 네트워크 운영상의 트러블 슈팅(trouble shooting) 속도 및 정확도를 높이는 것을 다른 목적으로 한다.
또한 본 발명은 네트워크 토폴로지가 변경될 때, 이를 각 플로우 테이블에 반영하는 작업(링크, 스위치, 호스트의 추가 및 삭제)을 보다 간소화함으로써 네트워크 성능을 전반적으로 개선하는 것을 다른 목적으로 한다.
이러한 목적을 달성하기 위한 본 발명은 컨트롤러가 가상 스위치와 가상 머신을 포함하는 컴퓨팅 노드 및 물리 스위치로 구성된 소프트웨어 정의 네트워킹을 제어하는 방법에 있어서, 상기 컴퓨팅 노드 또는 상기 가상 스위치에 복수개의 가상 식별자를 부여하는 단계, 상기 복수개의 가상 식별자 중 하나인 제1 가상 식별자를 정점으로 하는 제1 경로 트리와 다른 하나인 제2 가상 식별자를 정점으로 하는 제2 경로 트리를 생성하는 단계, 상기 제1 경로 트리에 대응하는 제1 플로우 룰을 생성하고, 상기 제1 플로우 룰의 매칭 조건을 상기 제1 가상 식별자를 이용하여 설정하는 단계, 상기 제2 경로 트리에 대응하는 제2 플로우 룰을 생성하고, 상기 제2 플로우 룰의 매칭 조건을 상기 제2 가상 식별자를 이용하여 설정하는 단계, 상기 제1 플로우 룰과 상기 제2 플로우 룰을 상기 물리 스위치에 전송하는 플로우 룰 전송 단계, 상기 가상 식별자는 패킷 전송에 영향을 미치지 않는 필드 값에 부여되는 가상의 식별자이며, 상기 제1 경로 트리와 상기 제2 경로 트리는 서로 다른 경로를 나타내는 것을 특징으로 한다.
또한 본 발명은 가상 스위치와 가상 머신을 포함하는 컴퓨팅 노드 및 물리 스위치로 구성된 소프트웨어 정의 네트워킹을 제어하는 컨트롤러에 있어서, 플로우 룰을 생성하는 애플리케이션부, 상기 플로우 룰을 상기 가상 스위치와 상기 물리 스위치에 전송하는 통신부, 상기 컴퓨팅 노드 및 상기 물리 스위치의 정보를 저장하는 저장부를 포함하며, 상기 애플리케이션부는 상기 컴퓨팅 노드 또는 상기 가상 스위치에 복수개의 가상 식별자를 부여하는 가상 식별자 생성부,상기 가상 식별자를 이용하여 상기 물리 스위치에 전송되는 제1 플로우 룰의 매칭 조건을 설정하는 플로우 룰 생성부를 포함하며, 상기 플로우 룰 생성부는 상기 복수개의 가상 식별자 중 하나인 제1 가상 식별자를 정점으로 하는 제1 경로 트리와 다른 하나인 제2 가상 식별자를 정점으로 하는 제2 경로 트리를 생성하고, 상기 제1 경로 트리에 대응하는 제1 플로우 룰을 생성하고, 상기 제1 플로우 룰의 매칭 조건을 상기 제1 가상 식별자를 이용하여 설정하고, 상기 제2 경로 트리에 대응하는 제2 플로우 룰을 생성하고, 상기 제2 플로우 룰의 매칭 조건을 상기 제2 가상 식별자를 이용하여 설정하며, 상기 통신부는 상기 제1 플로우 룰과 상기 제2 플로우 룰을 상기 물리 스위치에 전송하고, 상기 가상 식별자는 패킷 전송에 영향을 미치지 않는 필드 값에 부여되는 가상의 식별자이며, 상기 제1 경로 트리와 상기 제2 경로 트리는 서로 다른 경로를 나타내는 것을 다른 특징으로 한다.
전술한 바와 같은 본 발명에 의하면, 플로우 룰 저장 용량에 제한이 없는 가상 스위치의 활용도를 높임으로써, 확장성이 개선된 소프트웨어 정의 네트워킹 제어 방법을 제공할 수 있다.
또한 본 발명은 플로우 룰의 개수를 최적화함으로써 네트워크 운영상의 트러블 슈팅(trouble shooting) 속도 및 정확도를 높일 수 있다.
또한 본 발명은 네트워크 토폴로지가 변경될 때, 이를 각 플로우 테이블에 반영하는 작업(링크, 스위치, 호스트의 추가 및 삭제)을 보다 간소화함으로써 네트워크 성능을 전반적으로 개선하는 것을 다른 목적으로 한다. .
도 1은 본 발명의 소프트웨어 정의 네트워킹 환경 및 종래의 소프트웨어 정의 네트워킹 제어 방법을 설명하기 위한 도면,
도 2는 본 발명의 일 실시 예에 따른 소프트웨어 정의 네트워킹 제어 방법을 도시한 도면,
도 3은 본 발명의 일 실시 예에 따른 복수개의 식별자를 부여하여 네트워킹을 네어하는 방법을 도시한 도면,
도 4는 본 발명의 일 실시 예에 따른 다중 경로 설정 방법을 설명하기 위한 도면,
도 5는 본 발명의 일 실시 예에 따른 컨트롤러 구성을 설명하기 위한 블록도,
도 6은 본 발명의 일 실시 예에 따른 소프트웨어 정의 네트워킹 제어 방법을 설명하기 위한 순서도이다.
전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되며, 이에 따라 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 상세한 설명을 생략한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하기로 한다. 도면에서 동일한 참조부호는 동일 또는 유사한 구성요소를 가리키는 것으로 사용되며, 명세서 및 특허청구의 범위에 기재된 모든 조합은 임의의 방식으로 조합될 수 있다. 그리고 다른 식으로 규정하지 않는 한, 단수에 대한 언급은 하나 이상을 포함할 수 있고, 단수 표현에 대한 언급은 또한 복수 표현을 포함할 수 있음이 이해되어야 한다.
본 발명의 명세서에서 ‘플로우 룰’의 용어는 해당 업계의 통상의 기술자 입장에서 소프트트웨어 정의 네트워크에서 컨트롤러 서버가 적용하는 네트워크 정책을 의미하는 것으로 이해되어야 한다. 나아가 ‘플로우 룰’의 용어는 오픈플로우 스위치에 대해서는 상기 네트워크 정책에 따른 플로우 엔트리를 의미하는 것으로 해석될 수 있다. 나아가 본 명세서에서 플로우 룰의 변경(updating)은 신 플로우 룰의 추가(add), 구 플로우 룰의 삭제(delete) 또는 수정(modify)을 포함하는 개념으로 이해되어야 한다.
또한, 본 명세서에 기재된 ‘식별 주소’는 호스트, 디바이스 또는 프로세스를 식별하기 위한 것으로, 네트워크 계층에서의 호스트 주소인 IP주소, 호스트 내의 프로세스 주소인 포트 주소와 같은 논리 주소를 포함하며, MAC 주소와 같은 물리 주소를 포함하는 것으로 이해될 수 있다.
도 1은 본 발명의 소프트웨어 정의 네트워킹 환경(Software Defined Networking) 및 종래의 소프트웨어 정의 네트워킹 제어 방법(이하, ‘SDN 제어 방법’이라 함) 을 설명하기 위한 도면이다.
먼저, 본 발명의 소프트웨어 정의 네트워킹 환경은 컨트롤러(미도시), 네트워크 장비(100), 서버(또는 컴퓨팅 노드, 1000)를 포함할 수 있으며, 서버(1000)는 하나 이상의 가상 스위치(또는 소프트웨어 스위치)(200)와 하나 이상의 가상 머신(300)을 포함할 수 있다. 가상 스위치(200)와 가상 머신(300)은 고성능의 서버(1000)가 가지고 있는 리소스를 이용하여 가상의 스위치 또는 가상의 단말과 같이 동작할 수 있다.
본 명세서에서 네트워크 장비(100)는 패킷 처리를 위한 이동 통신 기지국, 기지국 제어기, 게이트웨이 장비, 라우터, 스위치 등과 같은 네트워크 장비를 모두 포함하나, 이하에서는 설명의 편의를 위해 네트워크 장비(100)가 물리 스위치(100)인 경우를 중심으로 설명한다.
물리 스위치(100)와 가상 스위치(200) 모두 컨트롤러의 제어에 따라 패킷을 처리하는 기능을 한다. 즉, 가상 스위치(200)는 동 네트워킹 환경에서 스위치로 기능하며, 따라서 가상 스위치(200)에 연결된 가상머신(300)을 각각 하나의 호스트로 볼 수 있다. 또한, 각각의 가상머신(300)은 고유의 식별주소를 가질 수 있다.
물리 스위치(100), 가상 스위치(200) 및 가상머신(300)은 노드(Node)라고 지칭할 수 있으며, 링크(Link)는 2개의 노드 사이의 연결을 의미할 수 있다.
컨트롤러는 네트워크 장비(100, 200)를 관리하는 기능을 하는 것으로, 복수의 네트워크 장비(100, 200)를 중앙 집중형으로 관리 및 제어한다. 구체적으로 컨트롤러는 토폴로지 관리(Topology management), 패킷 처리와 관련된 경로 관리(Path management), 링크 디스커버리(Link discovery), 패킷 흐름인 플로우 관리(Flow management) 등의 기능을 하는 애플리케이션(소프트웨어)가 탑재된 형태로 구현될 수 있다.
소프트웨어 정의 네트워킹에서 컨트롤러와 스위치(100, 200)는 상호간 정보를 주고받아야 하며, 이를 위한 프로토콜로 널리 사용되는 것이 오픈플로우(OpenFlow) 프로토콜이다. 즉, 오픈플로우 프로토콜은 컨트롤러와 오픈플로우 스위치(100, 200)간 통신할 수 있는 표준 규격이다.
보다 구체적으로 설명하면, 스위치(100, 200)는 크게 소프트웨어 계층과 하드웨어 계층으로 구분된다. 상기 소프트웨어 계층은 보안 채널(Secure Channel)을 통해 컨트롤러(100)과 정보를 교환한다. 상기 보안 채널은 스위치(100, 200)와 원거리에 위치한 컨트롤러 간 통신 채널이며, 컨트롤러와 스위치(100, 200) 간 교환되는 정보는 암호화된다.
상기 하드웨어 계층에는 패킷을 규정 및 처리하고, 패킷에 관련된 통계 정보를 포함하는 플로우 테이블(Flow table)이 존재한다. 상기 플로우 테이블은 패킷 처리를규정하는 플로우 룰(Flow Rule)로 구성되며, 상기 플로우 룰은 컨트롤러(100)가 생성하여 스위치(100, 200)에 전송하는 플로우 모드 메시지(Flow-Mod Message)에 의해 추가, 수정 또는 삭제될 수 있다. 스위치(100, 200)는 상기 플로우 테이블을 참조하여 패킷을 처리한다.
상기 플로우 테이블은 크게 세 가지 정보, 즉 플로우를 정의하는 패킷 헤더 정보(Rule), 패킷의 처리를 정의하는 동작 정보(Action) 및 플로우별 통계 정보(Stats)를 포함할 수 있다. 그리고 플로우 테이블을 이루는 각 행을 플로우 엔트리(Flow Entry)라고 칭한다.
호스트는 스위치의 하위 계층에 해당하는 단말 등을 의미하는 것으로, 클라이언트 및 서버를 통칭하는 의미로 사용될 수 있다. 본 명세서의 소프트웨어 정의 네트워킹 환경에서 서버(1000)가 물리 스위치(100)에 연결되어 있는 하위 단말이기는 하나, 서버(1000)에 포함된 가상 스위치(200)가 전체 네트워크에서 스위치로서 기능하므로, 네트워크 전체로 볼 때, 가장 하위 계층에 해당하는 단말은 가상 머신(300)이다. 따라서 본 명세서에서는 가상 머신(300)을 호스트(300)로 지칭하며, 본 명세서에서의 호스트(300)는 서버(1000)와는 구분되는 개념으로 이해될 수 있다.
호스트(300)는 소프트웨어 정의 네트워크를 통해 다른 호스트에 보내기 위한 패킷을 생성하고, 상기 패킷을 가상 스위치(200)에 연결된 네트워크 인터페이스의 포트를 통해 물리 스위치(100)로 전송할 수 있다.
도 1을 참조하여 종래의 SDN 제어 방법을 설명하면 다음과 같다.
상술한 바와 같이 각 스위치(100, 200)에 저장된 플로우 테이블은 플로우 엔트리를 포함하며, 플로우 엔트리는 매치 필드(match fields), 카운터(counters), 매치되는 패킷에 적용되는 하나 이상의 인스트럭션(instruction)으로 구성되어 있다. 스위치(100, 200)는 패킷이 포트로 입력되면, 패킷의 목적지 주소를 이용하여 해당 패킷에 매치되는 플로우 엔트리를 탐색한다.
예를 들어, 각 스위치(100, 200)가 컨트롤러로부터 플로우 룰을 수신하여 각각 도 1에 도시된 표와 같은 플로우 테이블을 가지고 있다고 가정하자. 10.0.0.1을 주소로 하는 호스트(300A)가 목적지 주소가 10.0.0.3인 호스트(300B)로 패킷을 전송하는 경우를 살펴보자.
종래 방식에 의하면, 패킷은 가상 스위치(200A)로 전송되며, 목적지 주소가 10.0.0.3인 패킷은 가상 스위치(200)의 플로우 엔트리에 의해, 1번 포트로 출력되어 물리스위치(100B)에 전송된다. 물리 스위치(100B)는 해당 패킷에 매치되는 플로우 엔트리의 액션에 따라 1번 포트로 출력하며, 패킷은 물리 스위치(100B)의 1번 포트와 연결된 물리 스위치(100A)로 전송된다. 패킷을 수신한 물리 스위치(100A)은 마찬가지로 자신이 가지고 있는 플로우 엔트리를 참조하여, 매칭되는 플로우 엔트리의 액션에 따라 2번 포트로 패킷을 출력하며, 출력된 패킷은 물리 스위치(100C) 및 가상 스위치(200B)를 거쳐 목적지 호스트(300B)에 도달한다.
이러한 방식은 전술한 바와 같이 관리 가능한 호스트(300)의 개수에 제한을 가져온다. 각 물리 스위치(100)는 메모리가 지원할 수 있는 개수만큼의 플로우 엔트리만을 저장할 수 있기 때문에, 네트워크를 구성하는 호스트(300)의 개수가 4000여개를 넘어가면, 네트워크는 제대로 동작하지 않을 것이다.
도 2는 본 발명의 일 실시 예에 따른 소프트웨어 정의 네트워킹 제어 방법을 도시한 도면이다. 본 발명의 일 실시 예에 따르면, 컴퓨팅 노드에는 하나 이상의 가상 식별자가 각각 부여된다.
예를 들어, 도 2에 도시된 컴퓨팅 노드에는 왼쪽에서부터 순차적으로 a:a:a:a:a:a, a:a:a:a:a:b, a:a:a:a:a:c, a:a:a:a:a:d, a:a:a:a:a:e, a:a:a:a:a:f와 같은 가상의 물리 주소가 가상 식별자로 부여되어 있다. 컨트롤러(50)는 가상 식별자를 이용하여 물리 스위치에 전송되는 플로우 룰의 매칭 조건을 설정할 수 있다.
예를 들어, 도 2에 도시된 바와 같이 물리 스위치(100A)에 전송되는 플로우 룰의 매치 필드(match field)에는 패킷의 목적지 물리 주소를 확인하는 매칭 조건이 설정될 수 있다. 만약 가상 식별자로 VLAN 태그가 사용되는 경우에는 패킷의 VLAN 태그를 확인하는 매칭 조건이 설정될 것이다. 가상 식별자는 패킷 전송에 영향을 미치지 않는 필드 값에 부여되는 가상의 식별자로, 컴퓨팅 노드(1000)별로 고유의 값을 갖도록 각각에 서로 다른 값이 부여되며, 논리 주소와 같이 패킷 전송에 영향을 미치는 필드가 아니라면 어떤 필드 값이든 가상 식별자가 설정 및 사용될 수 있다. 즉, 가상 식별자로는 목적지 IP 주소 또는 출발지 IP 주소를 제외한 모든 필드(MPLS, VLAN, DST_MAC)에 대응되는 값이 부여될 수 있다.
컨트롤러(50)는 가상 식별자를 이용하여 생성된 플로우 룰을 물리 스위치에 전송하며, 따라서 물리 스위치는 컴퓨팅 노드(1000) 간 전송 경로를 결정한다. 상기 컴퓨팅 노드(1000)의 목적지 물리 주소로 가상 식별자가 부여된 도 2의 예시에서, 목적지 논리 주소가 10.0.0.3 이고, 출발지 논리 주소가 10.0.0.1인 경우를 가정하자.
목적지가 아닌 가상 머신(300B를 제외한 나머지 가상 머신들)에 연결된 가상 스위치(200B를 제외한 나머지 가상 스위치들)에 전송되는 플로우 룰은 목적지 가상 머신(300B)을 포함하는 컴퓨팅 노드에 부여된 가상 식별자(a:a:a:a:a:c)를 상기 목적지로 전송되는 패킷의 목적지 물리 주소로 설정하는 액션 “Mod_eth_dst -> a:a:a:a:a:c”을 포함할 수 있다.
따라서 가상머신(300A)에서 출발한 패킷은 목적지 주소가 10.0.0.3이므로, 가상 스위치(200A)의 플로우 엔트리에 따라 목적지 물리 주소가 a:a:a:a:a:c로 변경되어 물리 스위치(100B)로 전달된다. 물리 스위치(200B)에 저장된 플로우 엔트리의 매칭 조건은 목적지 물리 주소로 설정되어 있으므로, 물리 스위치(200B)는 목적지 물리주소가 a:a:a:a:a:c인 상기 패킷을 2번 포트로 출력할 수 있다.
이와 같은 방법으로, 패킷은 물리 스위치(100C)를 거쳐 물리 주소가 a:a:a:a:a:c인 컴퓨팅 노드(1000B)로 전송되며, 컴퓨팅 노드(1000B)의 가상 스위치(200B)에 전달된 패킷은 가상 스위치(200B)에 저장된 플로우 테이블을 참조하여 패킷의 목적지 논리 주소를 확인할 수 있다. 본 예시에서 목적지 논리 주소는 10.0.0.3이므로, 도 2에 도시된 플로우 룰에 따라, 가상 스위치(200B)는 패킷의 목적지 물리 주소 필드에 부여된 가상 식별자를 목적지 가상 머신(300B)의 물리 주소(10.0.0.3‘s MAC)로 변경한다. 이는 이는 가상 머신(300B)이 패킷 수신 후 패킷의 목적지 물리주소가 자신의 물리주소와 다르면 패킷을 드랍하는 것을 방지하기 위함이다.
전술한 예시와 같이 물리 스위치(100)에 전송되는 플로우 룰과 가상 스위치(200)에 전송되는 플로우 룰은 매칭 조건과 액션이 상이하다. 따라서 물리 스위치(100)는 컴퓨팅 노드 간 전송 경로를 결정하고, 가상 스위치는 컴퓨팅 노드에 포함된 가상 머신(호스트, 300) 간의 전송 경로를 결정하는 역할을 한다. 그 결과 SDN 제어의 복잡도가 현저히 낮아지며, 물리 스위치(100)에 저장되는 플로우 엔트리의 수는 컴퓨팅 노드의 수에 비례하므로, 낮은 용량을 갖는 물리 스위치(100)의 한계를 극복할 수 있다.
네트워크 기능 가상화로 인해 고성능 컴퓨팅 노드의 리소스를 활용하여 다수의 가상 머신을 생성하는 사례가 늘어나고 있다. 가상 스위치의 경우 저장 가능한 플로우 룰의 개수에 제한이 없어 가상 머신의 개수가 크게 증가하더라도 충분히 관리 가능하므로, 본 발명에 의하면 개별 컴퓨팅 노드의 가상 머신 증가가 전체 네트워크에 영향을 미치지 않아 네트워크의 확장성을 높일 수 있다.
이하에서는 도 3 내지 도 4를 참조하여 컴퓨팅 노드에 복수의 가상 식별자가 부여되는 경우의 일 실시 예를 살펴본다.
컴퓨팅 노드에는 하나 이상의 가상 식별자가 부여될 수 있는데, 도 3과 같이 복수개의 가상 식별자가 부여될 수 있다. 복수개의 식별자를 사용하게 되면, 동일 컴퓨팅 노드로 전달되는 패킷이라도, 식별자 별로 경로를 다르게 설정함으로써 다중 경로(multi path)를 구현할 수 있다.
도 4를 참조하여 다중 경로를 설정하는 일 예를 살펴본다. 도 4의 예시에서 컴퓨팅 노드(1001)의 가상 식별자는 물리 주소 형태로 부여되었으며, 가상 식별자로는 a:a:a:a:a:c 와 a:a:a:a:a:d 두 개가 설정되었다. 가상 식별자를 복수 개 사용하는 경우, 하나의 식별자는 컴퓨팅 노드(또는 가상 스위치)를 정점으로 하는 다이렉티드 트리(directed tree) 하나에 대응되도록 경로가 설정될 수 있다.
즉, 컨트롤러는 제1 가상 식별자를 정점으로 하는 제1 경로 트리와 상기 제2 가상 식별자를 정점으로 하는 제2 경로 트리를 생성할 수 있으며, 제1 경로 트리와 상기 제2 경로 트리는 서로 다른 경로를 나타내는 것일 수 있다.
그리고 컨트롤러는 플로우 룰을 생성함에 있어서 제1 경로 트리에 대응하는 제4 플로우 룰을 생성하고, 상기 제4 플로우 룰의 매칭 조건을 상기 제1 가상 식별자를 이용하여 설정할 수 있다. 나아가, 컨트롤러는 제2 경로 트리에 대응하는 제5 플로우 룰을 생성하고, 상기 제5 플로우 룰의 매칭 조건을 상기 제2 가상 식별자를 이용하여 설정할 수 있으며, 생성된 제4 플로우 룰과 상기 제5 플로우 룰을 상기 물리 스위치에 전송할 수 있다.
위 실시 예에서 각각의 스위치는 임의의 컴퓨팅 노드 A에 패킷을 전송하는 플로우 엔트리를 플로우 테이블 내에 다수 개 포함할 수 있으며, 그 결과 복수 개의 패킷 목적지 호스트가 컴퓨팅 노드 A로 동일하더라도, 각 패킷은 서로 다른 경로를 이용하여 컴퓨팅 노드 A에 전송될 수 있다.
따라서 하나의 컴퓨팅 노드(또는 가상 스위치)를 정점으로 하는 식별자를 여러개 부여하는 것은 다중 경로를 설정할 수 있음을 의미한다. 본 발명의 복수개 가상 식별자를 이용한 다중 경로 설정은 로드 밸런싱(load balancing) 또는 트래픽 스티어링(traffic steering)에 사용될 수 있으며, 다중 경로를 이용하면 효율적으로 링크를 사용할 수 있다.
도 3을 이용하여 보다 구체적인 실시 예를 살펴본다. 예를 들어, 가상 스위치(200C)는 10.0.0.3을 목적지로 하는 패킷 A를 가상 머신으로부터 수신하면 패킷의 목적지 물리 주소를 컴퓨팅 노드(a:a:a:a:a:c)로 설정할 수 있다. 가상 스위치(200A)는 10.0.0.3을 목적지로 하는 패킷 B를 가상 머신으로부터 수신하면 패킷의 목적지 물리 주소를 컴퓨팅 노드(a:a:a:a:b:c)로 설정할 수 있다. 여기서 a:a:a:a:a:c와 a:a:a:a:b:c는 모두 컴퓨팅 노드(1000B)의 가상 식별자이다.
패킷 A를 수신한 물리 스위치(100B)는 매칭 조건으로 목적지 물리 주소를 확인하고, 패킷 A의 물리 주소는 a:a:a:a:a:c이므로 1번 포트로 패킷을 출력할 수 있다. 패킷 B를 수신한 물리 스위치(100B)는 패킷 B의 물리 주소가 a:a:a:a:b:c 이므로, 패킷을 4번 포트로 출력할 수 있다.
즉, 도 3의 예시에서 패킷 A는 실선에 대응되는 경로로 전송되며, 물리 스위치(100C)를 통해 a:a:a:a:a:c를 물리 주소로 하는 컴퓨팅 노드(1000B)에 도달한다.
패킷 B는 4번 포트를 거쳐 점선에 대응되는 경로를 따라 컴퓨팅 노드(1000B)로 전송된다. 컴퓨팅 노드(1000B)의 가상 스위치(200B)에 도착한 패킷A와 패킷 B는 둘 다 10.0.0.3을 목적지 논리 주소로 하므로, 가상 스위치(200B)는 패킷A와 패킷 B의 목적지 물리 주소를 목적지 가상 머신(300B)의 물리 주소로 변경한 후, 상기 목적지 가상 머신(300B)과 연결된 포트 2번으로 패킷을 출력할 수 있다.
도 5는 본 발명의 일 실시 예에 의한 컨트롤러(50)를 설명하기 위한 블록도이다. 도 5를 참조하면, 본 발명의 일 실시 예에 의한 컨트롤러(50)는 애플리케이션부(53), 통신부(55), 저장부(57)를 포함할 수 있으며, 애플리케이션부(53)는 가상 식별자 생성부(53-1), 경로 설정부(53-2), 플로우 룰 생성부(53-3)를 포함할 수 있으며, 를 더 포함할 수 있다.
애플리케이션부(53)는 컨트롤러(50)가 수행하는 각종 기능이 구현되는 영역으로, 전술한 네트워크 토폴로지 관리, 경로 관리 등을 수행하는 애플리케이션이 포함될 수 있다.
가상 식별자 생성부(53-1)는 컴퓨팅 노드 또는 상기 가상 스위치에 하나 이상의 가상 식별자를 부여할 수 있다. 가상 식별자 생성부(53-1)는 SDN 제어 설정에 따라 컴퓨팅 노드 또는 가상 스위치에 부여되는 가상 식별자의 개수를 조절할 수 있다.
경로 설정부(53-2)는 컴퓨팅 노드 또는 가상 스위치에 복수개의 가상 식별자가 부여된 경우, 가상 식별자 각각을 정점으로 하는 경로 트리를 복수개 생성할 수 있다.
플로우 룰 생성부(53-3)은 가상 식별자를 이용하여 상기 물리 스위치에 전송되는 제1 플로우 룰의 매칭 조건을 설정하며, 컴퓨팅 노드 또는 가상 스위치에 복수개의 가상 식별자가 부여된 경우, 경로 설정부(53-2)에서 생성된 경로 트리 각각에 대응되는 플로우 룰을 생성할 수 있다. 플로우 룰 생성부(53-3)는 물리 스위치(100)에 전송되는 플로우 룰의 매칭 조건에는 가상 식별자를 사용하고, 가상 스위치(200)에 전송되는 플로우 룰의 매칭 조건에는 가상 머신(또는 호스트)의 실제 논리 주소를 사용할 수 있다. 또한 가상 스위치(200)에 전송되는 플로우 룰에는 패킷의 물리 주소를 변경하는 액션을 포함시킬 수 있으며, 이에 대한 설명은 전술한 바 있으므로 생략하기로 한다.
통신부(55)는 스위치(100, 200)와 통신할 수 있다. 통신부(55)는 물리 스위치(100)와 가상 스위치(200)에 각각에 대응되는 플로우 룰을 전송함으로써, 각 스위치가 플로우 룰에 따라 패킷을 전달하도록 한다. 통신부(55)는 보안 채널(Secure Channel)을 통해 스위치(100, 200)와 정보를 교환할 수 있으며, 스위치(100, 200)와 교환되는 정보는 암호화될 수 있다.
저장부(57)는 컨트롤러 애플리케이션의 상태와 애플리케이션의 운영에 필요한 정보, 컨트롤러(50)가 스위치(100, 200)에 전송한 플로우 룰, 스위치(100, 200)의 상태, 네트워크 토폴로지 정보 등 다양한 정보를 저장할 수 있다. 특히, 저장부(57)는 경로 설정부(53-2)의 경로 트리 생성을 위한 알고리즘을 저장할 수 있다.
도 6을 참조하여 컨트롤러의 소프트웨어 정의 네트워킹 제어 방법을 다시 한번 정리하면, 컨트롤러는 컴퓨팅 노드 또는 가상 스위치에 가상 식별자를 부여하고(S100), 가상 식별자를 이용하여 물리 스위치에 전송되는 제1 플로우 룰을 생성할 수 있다(S200), 그리고 가상 머신의 논리 주소와 같은 가상 머신 식별자를 이용하여 가상 스위치에 전송되는 제2 플로우 룰을 생성할 수 있다. 컨트롤러는 단계 400에서 제1 플로우 룰을 물리 스위치에 전송하고, 제2 플로우 룰을 가상 스위치에 전송함으로써 가상 스위치와 물리 스위치를 계층화할 수 있다.
전술한 컨트롤러의 소프트웨어 정의 네트워킹 제어 방법은 각 실시 예 중 어느 하나를 실행시키기 위하여 컴퓨터 판독 가능 매체에 저장된 컨트롤러 응용 프로그램을 통해 컨트롤러(50)에서 구현될 수 있다.
본 명세서에서 생략된 일부 실시 예는 그 실시 주체가 동일한 경우 동일하게 적용 가능하다. 또한, 전술한 본 발명은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니다.

50: 컨트롤러
100: 물리 스위치
200: 가상 스위치(소프트웨어 스위치)
300: 가상 머신(호스트)
1000: 컴퓨팅 노드(서버)

Claims (5)

  1. 컨트롤러가 가상 스위치와 가상 머신을 포함하는 컴퓨팅 노드 및 물리 스위치로 구성된 소프트웨어 정의 네트워킹을 제어하는 방법에 있어서,
    상기 컴퓨팅 노드 또는 상기 가상 스위치에 복수개의 가상 식별자를 부여하는 단계;
    상기 복수개의 가상 식별자 중 하나인 제1 가상 식별자를 정점으로 하는 제1 경로 트리와 다른 하나인 제2 가상 식별자를 정점으로 하는 제2 경로 트리를 생성하는 단계;
    상기 제1 경로 트리에 대응하는 제1 플로우 룰을 생성하고, 상기 제1 플로우 룰의 매칭 조건을 상기 제1 가상 식별자를 이용하여 설정하는 단계;
    상기 제2 경로 트리에 대응하는 제2 플로우 룰을 생성하고, 상기 제2 플로우 룰의 매칭 조건을 상기 제2 가상 식별자를 이용하여 설정하는 단계;
    상기 제1 플로우 룰과 상기 제2 플로우 룰을 상기 물리 스위치에 전송하는 플로우 룰 전송 단계;
    상기 가상 식별자는 패킷 전송에 영향을 미치지 않는 필드 값에 부여되는 가상의 식별자이며, 상기 제1 경로 트리와 상기 제2 경로 트리는 서로 다른 경로를 나타내는 소프트웨어 정의 네트워킹 제어 방법.

  2. 제1항에 있어서,
    상기 가상 식별자가 상기 컴퓨팅 노드의 목적지 물리 주소로 부여된 경우,
    목적지 가상 머신에 연결된 제1 가상 스위치에 전송되는 제3 플로우 룰은
    상기 목적지로 전송되는 패킷의 목적지 물리 주소 필드에 부여된 가상 식별자를 상기 목적지 가상 머신의 물리 주소로 변경하는 액션을 포함하는 소프트웨어 정의 네트워킹 제어 방법.
  3. 제1항에 있어서,
    상기 가상 식별자가 상기 컴퓨팅 노드의 목적지 물리 주소로 부여된 경우,
    목적지가 아닌 가상 머신에 연결된 제2 가상 스위치에 전송되는 제4 플로우 룰은
    목적지 가상 머신을 포함하는 컴퓨팅 노드에 부여된 가상 식별자를 상기 목적지로 전송되는 패킷의 목적지 물리 주소로 설정하는 액션을 포함하는 소프트웨어 정의 네트워킹 제어 방법.
  4. 가상 스위치와 가상 머신을 포함하는 컴퓨팅 노드 및 물리 스위치로 구성된 소프트웨어 정의 네트워킹을 제어하는 컨트롤러에 있어서,
    플로우 룰을 생성하는 애플리케이션부;
    상기 플로우 룰을 상기 가상 스위치와 상기 물리 스위치에 전송하는 통신부;
    상기 컴퓨팅 노드 및 상기 물리 스위치의 정보를 저장하는 저장부를 포함하며,
    상기 애플리케이션부는
    상기 컴퓨팅 노드 또는 상기 가상 스위치에 복수개의 가상 식별자를 부여하는 가상 식별자 생성부;
    상기 가상 식별자를 이용하여 상기 물리 스위치에 전송되는 제1 플로우 룰의 매칭 조건을 설정하는 플로우 룰 생성부를 포함하며,
    상기 플로우 룰 생성부는
    상기 복수개의 가상 식별자 중 하나인 제1 가상 식별자를 정점으로 하는 제1 경로 트리와 다른 하나인 제2 가상 식별자를 정점으로 하는 제2 경로 트리를 생성하고, 상기 제1 경로 트리에 대응하는 제1 플로우 룰을 생성하고, 상기 제1 플로우 룰의 매칭 조건을 상기 제1 가상 식별자를 이용하여 설정하고, 상기 제2 경로 트리에 대응하는 제2 플로우 룰을 생성하고, 상기 제2 플로우 룰의 매칭 조건을 상기 제2 가상 식별자를 이용하여 설정하며,
    상기 통신부는 상기 제1 플로우 룰과 상기 제2 플로우 룰을 상기 물리 스위치에 전송하고,
    상기 가상 식별자는 패킷 전송에 영향을 미치지 않는 필드 값에 부여되는 가상의 식별자이며, 상기 제1 경로 트리와 상기 제2 경로 트리는 서로 다른 경로를 나타내는 컨트롤러.
  5. 제 1 항 내지 제 3 항의 방법 중 어느 하나의 방법을 실행시키기 위하여 컴퓨터 판독 가능 매체에 저장된 컨트롤러 응용 프로그램.
KR1020170156500A 2017-11-22 2017-11-22 소프트웨어 정의 네트워킹 제어 방법 및 이를 수행하는 컴퓨팅 장치 KR102001487B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170156500A KR102001487B1 (ko) 2017-11-22 2017-11-22 소프트웨어 정의 네트워킹 제어 방법 및 이를 수행하는 컴퓨팅 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170156500A KR102001487B1 (ko) 2017-11-22 2017-11-22 소프트웨어 정의 네트워킹 제어 방법 및 이를 수행하는 컴퓨팅 장치

Publications (2)

Publication Number Publication Date
KR20190059004A true KR20190059004A (ko) 2019-05-30
KR102001487B1 KR102001487B1 (ko) 2019-07-17

Family

ID=66675709

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170156500A KR102001487B1 (ko) 2017-11-22 2017-11-22 소프트웨어 정의 네트워킹 제어 방법 및 이를 수행하는 컴퓨팅 장치

Country Status (1)

Country Link
KR (1) KR102001487B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102346417B1 (ko) * 2021-09-17 2022-01-04 한화시스템(주) 분산형 소프트웨어 정의 네트워크에서의 리더 컨트롤러 선택 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150054006A (ko) * 2011-01-13 2015-05-19 닛본 덴끼 가부시끼가이샤 네트워크 시스템 및 경로 제어 방법
KR101751891B1 (ko) * 2016-05-04 2017-07-11 성균관대학교산학협력단 오픈플로우 무선 메쉬 네트워크 환경에서의 오픈플로우 컨트롤러, 오픈플로우 컨트롤러의 토폴로지 디스커버리 방법, 오픈플로우 메쉬 장치 및 오픈플로우 메쉬 장치의 피어 탐지 방법
KR101797112B1 (ko) * 2016-01-25 2017-11-15 쿨클라우드(주) 컨테이너 네트워크 관리 시스템

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150054006A (ko) * 2011-01-13 2015-05-19 닛본 덴끼 가부시끼가이샤 네트워크 시스템 및 경로 제어 방법
KR101797112B1 (ko) * 2016-01-25 2017-11-15 쿨클라우드(주) 컨테이너 네트워크 관리 시스템
KR101751891B1 (ko) * 2016-05-04 2017-07-11 성균관대학교산학협력단 오픈플로우 무선 메쉬 네트워크 환경에서의 오픈플로우 컨트롤러, 오픈플로우 컨트롤러의 토폴로지 디스커버리 방법, 오픈플로우 메쉬 장치 및 오픈플로우 메쉬 장치의 피어 탐지 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102346417B1 (ko) * 2021-09-17 2022-01-04 한화시스템(주) 분산형 소프트웨어 정의 네트워크에서의 리더 컨트롤러 선택 방법

Also Published As

Publication number Publication date
KR102001487B1 (ko) 2019-07-17

Similar Documents

Publication Publication Date Title
JP7417825B2 (ja) スライスベースルーティング
JP6445015B2 (ja) ミドルウェアおよびアプリケーションの実行のためにエンジニアド・システムにおいてデータサービスを提供するためのシステムおよび方法
US20180324274A1 (en) Information system, control apparatus, method of providing virtual network, and program
US6950434B1 (en) Arrangement for searching packet policies using multi-key hash searches in a network switch
US8873563B2 (en) Techniques for next-hop optimization
US20120314605A1 (en) Communication system, path control apparatus, packet forwarding apparatus, and path control method
CN111147372B (zh) 下行报文发送、转发方法和装置
JP6574054B2 (ja) パケット転送
JP6488426B2 (ja) マルチキャストデータパケット転送
WO2018036254A1 (zh) 报文转发方法及装置
JP6529660B2 (ja) マルチキャストデータパケット転送
CN109547354B (zh) 负载均衡方法、装置、系统、核心层交换机及存储介质
EP3136662B1 (en) Construction method, device and system for multi-path forwarding rules
CN102857414A (zh) 一种转发表写入、报文转发方法及装置
US9800508B2 (en) System and method of flow shaping to reduce impact of incast communications
JP2018515052A (ja) マルチキャストデータパケット転送
CN104508651A (zh) 镜像非对称集群多处理器系统中的连接网
JPWO2014112616A1 (ja) 制御装置、通信装置、通信システム、スイッチの制御方法及びプログラム
CN110290072B (zh) 流量控制方法、装置、网络设备及存储介质
US10581738B2 (en) Efficient inter-VLAN routing in openflow networks
US11563698B2 (en) Packet value based packet processing
US20200028779A1 (en) Packet processing method and apparatus
Schlansker et al. Killer fabrics for scalable datacenters
CN106411553B (zh) 一种业务链路径的优化方法及装置
CN110022263B (zh) 一种数据传输的方法及相关装置

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