KR20170010835A - 플로우 테이블 관리 방법, 및 관련 디바이스 및 시스템 - Google Patents

플로우 테이블 관리 방법, 및 관련 디바이스 및 시스템 Download PDF

Info

Publication number
KR20170010835A
KR20170010835A KR1020167036135A KR20167036135A KR20170010835A KR 20170010835 A KR20170010835 A KR 20170010835A KR 1020167036135 A KR1020167036135 A KR 1020167036135A KR 20167036135 A KR20167036135 A KR 20167036135A KR 20170010835 A KR20170010835 A KR 20170010835A
Authority
KR
South Korea
Prior art keywords
flow table
table entry
fields
field
flow
Prior art date
Application number
KR1020167036135A
Other languages
English (en)
Other versions
KR101913490B1 (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 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20170010835A publication Critical patent/KR20170010835A/ko
Application granted granted Critical
Publication of KR101913490B1 publication Critical patent/KR101913490B1/ko

Links

Images

Classifications

    • 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
    • H04L12/00Data switching networks
    • 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
    • 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
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-defined 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 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 제1 필드 세트는 N개의 필드를 포함함 -; 및 소프트웨어 정의 네트워크 제어기에 의해, 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하는 단계 - 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송함 - 를 포함한다. 본 발명의 실시예들에서의 기술적 해결책은 SDN 제어기에 의해 오픈플로우 스위치로 발행되는 플로우 테이블 엔트리들의 데이터 양을 감소시키는데 이롭고, 그에 의해 제어 채널의 오버헤드를 감소시키고, 제어 채널의 정체 위험을 감소시키고, SDN 제어기 및 오픈플로우 스위치의 네트워크 처리 리소스들에 대해 플로우 테이블 엔트리들을 발행하는 점유를 감소시킨다.

Description

플로우 테이블 관리 방법, 및 관련 디바이스 및 시스템{FLOW TABLE MANAGEMENT METHOD AND RELEVANT DEVICE AND SYSTEM}
본 발명은 네트워크 통신 기술 분야에 관한 것이며, 구체적으로는 플로우 테이블 관리 방법, 및 관련 디바이스 및 통신 시스템에 관한 것이다.
오픈플로우(OpenFlow) 기술은, 혁신적인 인터네트워킹 개념을 이용함으로써 그리고 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP, Transmission Control Protocol/Internet Protocol)의 기술적 조건들에 기초하여, 새로운 서비스들이 현재의 네트워크들을 통해 제공될 때 발생하는 다양한 병목현상 문제점들을 해결하기 위해 스탠포드 대학교에 의해 원래 제안되었다.
오픈플로우 기술의 핵심 아이디어에 따르면, 스위칭 디바이스(스위칭 디바이스는 예를 들어 스위치 또는 라우터일 수 있음)에 의해 원래 전적으로 제어되는 패킷 포워딩 프로세스는, 오픈플로우 스위치(OpenFlow switch) 및 소프트웨어 정의 네트워크(SDN, Software Defined Network) 제어기(SDN Controller)에 의해 협력적으로 완료되도록 변경된다.
SDN 제어기는, 능동적으로 또는 오픈플로우 스위치가 요청을 송신할 때, 패킷 포워딩 처리 방식을 표시하기 위해 이용되는 플로우 테이블 엔트리를 오픈플로우 스위치로 전달할 수 있다. 오픈플로우 스위치는, SDN 제어기에 의해 전달된 플로우 테이블 엔트리에 따라, 이 플로우 테이블 엔트리에 매칭하는 수신 패킷에 대해 포워딩 처리를 수행한다.
종래 기술에서, 임의의 시간에 SDN 제어기에 의해 오픈플로우 스위치로 전달되는 플로우 테이블 엔트리는 완전한 표준 플로우 테이블 엔트리이다. SDN 제어기는 때때로 수십개 또는 수백개의 플로우 테이블 엔트리를 한번에 오픈플로우 스위치로 또한 전달한다. SDN 제어기가 완전한 표준 플로우 테이블 엔트리들을 전달할 때, 일부 경우에, 제어 채널의 비교적 높은 오버헤드가 야기될 수 있고 - 이는 제어 채널의 정체 위험을 증가시킴 -, SDN 제어기 및 오픈플로우 스위치 양쪽 모두의 비교적 다량의 네트워크 처리 리소스들이 점유된다.
본 발명의 실시예들은 플로우 테이블 관리 방법, 디바이스 및 시스템을 제공하여, SDN 제어기에 의해 오픈플로우 스위치로 전달되는 플로우 테이블 엔트리들의 데이터 볼륨을 감소시키고, 그에 의해 제어 채널의 오버헤드를 감소시켜 제어 채널의 정체 위험을 감소시키고, 플로우 테이블 엔트리들을 전달하기 위해 점유되는 SDN 제어기 및 오픈플로우 스위치의 네트워크 처리 리소스들을 감소시킨다.
제1 양태에 따르면, 플로우 테이블 관리 방법은,
소프트웨어 정의 네트워크 제어기에 의해, 제1 플로우 테이블 엔트리를 생성하는 단계 - 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -; 및
소프트웨어 정의 네트워크 제어기에 의해, 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하는 단계 - 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송함 -
를 포함한다.
제1 양태를 참조하여, 제1 양태의 제1 가능한 구현 방식에서, 인덱스는 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자이다.
제1 양태 또는 제1 양태의 제1 가능한 구현 방식을 참조하여, 제1 양태의 제2 가능한 구현 방식에서, 제1 플로우 테이블 엔트리에서의 제2 필드 세트의 각각의 필드는 다수의 실제 값을 반송하고, 제2 필드 세트는 M개의 필드를 포함하고, M은 양의 정수이다.
제1 양태 또는 제1 양태의 제1 가능한 구현 방식 또는 제1 양태의 제2 가능한 구현 방식을 참조하여, 제1 양태의 제3 가능한 구현 방식에서, 제1 플로우 테이블 엔트리를 생성하는 단계 이전에, 이 방법은, 소프트웨어 정의 네트워크 제어기에 의해, 스위치로부터 제1 패킷 또는 제1 패킷의 패킷 헤더를 수신하고, 미리 설정된 처리 정책에 따라, 제1 패킷을 처리하는데 이용되는 라우팅 명령어 세트를 결정하는 단계를 더 포함하고, 제1 플로우 테이블 엔트리의 명령어 필드가 라우팅 명령어 세트 또는 라우팅 명령어 세트의 인덱스를 반송한다.
제2 양태에 따르면, 플로우 테이블 관리 방법은,
오픈플로우 스위치에 의해, 오픈플로우 프로토콜 메시지를 수신하는 단계 - 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -;
오픈플로우 스위치에 의해, 제1 필드 세트에서의 실제 값의 인덱스에 기초하여 제1 필드 세트에서의 실제 값을 획득하는 단계; 및
오픈플로우 스위치에 의해, 제1 필드 세트에서의 실제 값의 것이며 제1 플로우 테이블 엔트리에서의 제1 필드 세트에서 반송되는 인덱스를 제1 필드 세트에서의 실제 값으로 대체하는 단계
를 포함한다.
제2 양태를 참조하여, 제2 양태의 제1 가능한 구현 방식에서, 인덱스는 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자이고, 제1 필드 세트에서의 인덱스에 기초하여 제1 필드 세트에서의 실제 값을 획득하는 단계는, 플로우 테이블 엔트리 식별자에 기초하여, 플로우 테이블 엔트리 식별자에 의해 표현된 플로우 테이블 엔트리에 있으며 제1 필드 세트와 동일한 프로토콜 타입을 갖는 제3 필드 세트에 채워진 실제 값을 획득하는 단계를 포함하고, 제3 필드 세트 및 제1 필드 세트에 있으며 동일한 프로토콜 타입을 갖는 필드들은 동일한 실제 값을 갖는다.
제2 양태 또는 제2 양태의 제1 가능한 구현 방식을 참조하여, 제2 양태의 제2 가능한 구현 방식에서, 이 방법은, 오픈플로우 스위치에 의해, 저장된 제1 플로우 테이블 엔트리 또는 제1 플로우 테이블 엔트리의 식별자를 소프트웨어 정의 네트워크 제어기로 송신하는 단계를 더 포함한다.
제2 양태 또는 제2 양태의 제1 가능한 구현 방식 또는 제2 양태의 제2 가능한 구현 방식을 참조하여, 제2 양태의 제3 가능한 구현 방식에서, 오픈플로우 스위치가 제1 플로우 테이블 엔트리를 수신하기 이전에, 이 방법은, 오픈플로우 스위치에 의해, 제1 패킷 또는 제1 패킷의 패킷 헤더를 소프트웨어 정의 네트워크 제어기로 송신하는 단계를 더 포함하고,
제1 플로우 테이블 엔트리의 명령어 필드는 제1 패킷을 처리하는데 이용되는 라우팅 명령어 세트 또는 라우팅 명령어 세트의 인덱스를 반송하고,
이 방법은, 오픈플로우 스위치에 의해, 라우팅 명령어 세트에 기초하여 제1 패킷을 처리하는 단계를 더 포함한다.
제3 양태에 따르면, 플로우 테이블 중계 방법은,
가상 계층 디바이스에 의해, 제1 소프트웨어 정의 네트워크 제어기로부터 제1 오픈플로우 프로토콜 메시지를 수신하는 단계 - 제1 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 제1 플로우 테이블 엔트리에서의 제1 필드는 제1 필드에서의 실제 값의 인덱스를 반송함 -;
가상 계층 디바이스에 의해, 제2 소프트웨어 정의 네트워크 제어기로부터 제2 오픈플로우 프로토콜 메시지를 수신하는 단계 - 제2 오픈플로우 프로토콜 메시지는 제2 플로우 테이블 엔트리를 반송하고, 제2 플로우 테이블 엔트리에서의 제4 필드는 제4 필드에서의 실제 값의 인덱스를 반송함 -;
가상 계층 디바이스에 의해, 제1 플로우 테이블 엔트리와 제2 플로우 테이블 엔트리를 제3 플로우 테이블 엔트리로 결합하는 단계; 및
가상 계층 디바이스에 의해, 제3 플로우 테이블 엔트리를 반송하는 제3 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하는 단계
를 포함할 수 있다.
제4 양태에 따르면, 소프트웨어 정의 네트워크 제어기는,
제1 플로우 테이블 엔트리를 생성하도록 구성된 생성 유닛 - 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -; 및
오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하도록 구성된 송신 유닛 - 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송함 -
을 포함할 수 있다.
제4 양태를 참조하여, 제4 양태의 제1 가능한 구현 방식에서, 인덱스는 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자이다.
제4 양태 또는 제4 양태의 제1 가능한 구현 방식을 참조하여, 제4 양태의 제2 가능한 구현 방식에서, 제1 플로우 테이블 엔트리에서의 제2 필드 세트의 각각의 필드는 다수의 실제 값을 반송하고, 제2 필드 세트는 M개의 필드를 포함하고, M은 양의 정수이다.
제4 양태 또는 제4 양태의 제1 가능한 구현 방식 또는 제4 양태의 제2 가능한 구현 방식을 참조하여, 제4 양태의 제3 가능한 구현 방식에서, 소프트웨어 정의 네트워크 제어기는, 생성 유닛이 제1 플로우 테이블 엔트리를 생성하기 이전에, 스위치로부터 제1 패킷 또는 제1 패킷의 패킷 헤더를 수신하고, 미리 설정된 처리 정책에 따라, 제1 패킷을 처리하는데 이용되는 라우팅 명령어 세트를 결정하도록 구성된 수신 유닛을 더 포함하고, 제1 플로우 테이블 엔트리의 명령어 필드가 라우팅 명령어 세트 또는 라우팅 명령어 세트의 인덱스를 반송한다.
제5 양태에 따르면, 오픈플로우 스위치는,
오픈플로우 프로토콜 메시지를 수신하도록 구성된 수신 유닛 - 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -;
제1 필드 세트에서의 실제 값의 인덱스에 기초하여 제1 필드 세트에서의 실제 값을 획득하도록 구성된 획득 유닛; 및
제1 필드 세트에서의 실제 값의 것이며 제1 플로우 테이블 엔트리에서의 제1 필드 세트에서 반송되는 인덱스를, 획득 유닛에 의해 획득되는 제1 필드 세트의 실제 값으로 대체하도록 구성된 대체 유닛
을 포함할 수 있다.
제5 양태를 참조하여, 제5 양태의 제1 가능한 구현 방식에서, 인덱스는 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자이고,
획득 유닛은, 플로우 테이블 엔트리 식별자에 기초하여, 플로우 테이블 엔트리 식별자에 의해 표현된 플로우 테이블 엔트리에 있으며 제1 필드 세트와 동일한 프로토콜 타입을 갖는 제3 필드 세트에 채워진 실제 값을 획득하도록 구체적으로 구성되고, 제3 필드 세트 및 제1 필드 세트에 있으며 동일한 프로토콜 타입을 갖는 필드들은 동일한 실제 값을 갖는다.
제5 양태 또는 제5 양태의 제1 가능한 구현 방식을 참조하여, 제5 양태의 제2 가능한 구현 방식에서, 오픈플로우 스위치는, 저장된 제1 플로우 테이블 엔트리 또는 제1 플로우 테이블 엔트리의 식별자를 소프트웨어 정의 네트워크 제어기로 송신하도록 구성된 제1 송신 유닛을 더 포함한다.
제5 양태 또는 제5 양태의 제1 가능한 구현 방식 또는 제5 양태의 제2 가능한 구현 방식을 참조하여, 제5 양태의 제3 가능한 구현 방식에서, 오픈플로우 스위치는,
제1 플로우 테이블 엔트리가 수신되기 이전에, 제1 패킷 또는 제1 패킷의 패킷 헤더를 소프트웨어 정의 네트워크 제어기로 송신하도록 구성된 제2 송신 유닛 - 제1 플로우 테이블 엔트리의 명령어 필드는 제1 패킷을 처리하는데 이용되는 라우팅 명령어 세트 또는 라우팅 명령어 세트의 인덱스를 반송함 -; 및
라우팅 명령어 세트에 기초하여 제1 패킷을 처리하도록 구성된 패킷 처리 유닛
을 더 포함한다.
제6 양태에 따르면, 가상 계층 디바이스는,
제1 소프트웨어 정의 네트워크 제어기로부터 제1 오픈플로우 프로토콜 메시지를 수신하고 - 제1 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 제1 플로우 테이블 엔트리에서의 제1 필드는 제1 필드에서의 실제 값의 인덱스를 반송함 -; 제2 소프트웨어 정의 네트워크 제어기로부터 제2 오픈플로우(OpenFlow) 프로토콜 메시지를 수신하도록 구성된 수신 유닛 - 제2 오픈플로우 프로토콜 메시지는 제2 플로우 테이블 엔트리를 반송하고, 제2 플로우 테이블 엔트리에서의 제4 필드는 제4 필드에서의 실제 값의 인덱스를 반송함 -;
제1 플로우 테이블 엔트리와 제2 플로우 테이블 엔트리를 제3 플로우 테이블 엔트리로 결합하도록 구성된 결합 유닛; 및
제3 플로우 테이블 엔트리를 반송하는 제3 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하도록 구성된 송신 유닛
을 포함한다.
제7 양태에 따르면, 통신 시스템은,
제1 플로우 테이블 엔트리를 생성하고 - 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -; 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하도록 구성된 소프트웨어 정의 네트워크 제어기 - 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송함 -; 및
오픈플로우 프로토콜 메시지를 수신하고; 제1 필드 세트에서의 실제 값의 인덱스에 기초하여 제1 필드 세트에서의 실제 값을 획득하고; 제1 필드 세트에서의 실제 값의 것이며 제1 플로우 테이블 엔트리에서의 제1 필드 세트에서 반송되는 인덱스를 제1 필드 세트에서의 실제 값으로 대체하도록 구성된 오픈플로우 스위치
를 포함한다.
제8 양태에 따르면, 통신 시스템은,
제1 오픈플로우(OpenFlow) 프로토콜 메시지를 송신하도록 구성된 제1 소프트웨어 정의 네트워크 제어기 - 제1 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 제1 플로우 테이블 엔트리에서의 제1 필드는 제1 필드에서의 실제 값의 인덱스를 반송함 -;
제2 오픈플로우 프로토콜 메시지를 송신하도록 구성된 제2 소프트웨어 정의 네트워크 제어기 - 제2 오픈플로우 프로토콜 메시지는 제2 플로우 테이블 엔트리를 반송하고, 제2 플로우 테이블 엔트리에서의 제4 필드는 제4 필드에서의 실제 값의 인덱스를 반송함 -;
제1 소프트웨어 정의 네트워크 제어기로부터 제1 오픈플로우 프로토콜 메시지를 수신하고; 제2 소프트웨어 정의 네트워크 제어기로부터 제2 오픈플로우 프로토콜 메시지를 수신하고; 제1 플로우 테이블 엔트리와 제2 플로우 테이블 엔트리를 제3 플로우 테이블 엔트리로 결합하고; 제3 플로우 테이블 엔트리를 반송하는 제3 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하도록 구성된 가상 계층 디바이스; 및
제3 오픈플로우 프로토콜 메시지를 수신하고; 제3 오픈플로우 프로토콜 메시지에서 반송되는 제3 플로우 테이블 엔트리를 제1 플로우 테이블 엔트리 및 제2 플로우 테이블 엔트리로 분할하고; 제1 필드의 실제 값의 인덱스에 기초하여 제1 필드의 실제 값을 획득하고; 제4 필드의 실제 값의 인덱스에 기초하여 제4 필드의 실제 값을 획득하고; 제1 필드에서의 실제 값의 것이며 제1 플로우 테이블 엔트리에서의 제1 필드에서 반송되는 인덱스를 제1 필드에서의 실제 값으로 대체하고; 제4 필드의 실제 값의 것이며 제2 플로우 테이블 엔트리에서의 제4 필드에서 반송되는 인덱스를 제4 필드의 실제 값으로 대체하도록 구성된 오픈플로우 스위치
를 포함한다.
본 발명의 실시예들에서의 해결책들에서, SDN 제어기에 의해 오픈플로우 스위치로 송신된 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에 대해, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값을 반송하는 대신에 제1 필드 세트에서의 실제 값의 인덱스를 반송한다는 것을 알 수 있다. 기술적 구현에서, 필드의 실제 값의 인덱스의 데이터 볼륨은 일반적으로 이 필드의 실제 값의 데이터 볼륨보다 더 작거나 심지어는 훨씬 더 작다. 그러므로, 이러한 실시예들에서 플로우 테이블 엔트리를 전달하는 메커니즘은 SDN 제어기와 오픈플로우 스위치 사이의 제어 채널의 오버헤드를 감소시키는 것을 돕고, 그에 의해 제어 채널의 정체 위험을 감소시키고, 또한 스위칭 디바이스의 네트워크 리소스들의 소모를 감소시키는 것을 돕고, 복잡한 네트워킹의 요건을 충족시키는 것을 돕는다.
종래 기술에서의 또는 본 발명의 실시예들에서의 기술적 해결책들을 더 명확하게 설명하기 위해서, 다음에 이러한 실시예들 또는 종래 기술을 설명하기 위해 요구되는 첨부 도면들을 간략하게 소개한다. 명백하게도, 다음의 설명에서의 첨부 도면들은 본 발명의 일부 실시예들을 도시할 뿐이며, 본 기술분야의 통상의 기술자라면 창조적 노력 없이 이러한 첨부 도면들로부터 다른 도면들을 여전히 도출할 수 있다.
도 1a는 본 발명의 실시예에 따른 플로우 테이블 관리 방법의 개략적인 플로우차트이다.
도 1b는 본 발명의 실시예에 따른 SDN에 의해 전달되는 플로우 테이블 엔트리의 개략도이다.
도 1c는 본 발명의 실시예에 따른 SDN에 의해 전달되는 다른 플로우 테이블 엔트리의 개략도이다.
도 1d는 본 발명의 실시예에 따른 SDN에 의해 전달되는 다른 플로우 테이블 엔트리의 개략도이다.
도 1e는 본 발명의 실시예에 따른 SDN에 의해 전달되는 다른 플로우 테이블 엔트리의 개략도이다.
도 1f는 본 발명의 실시예에 따른 SDN에 의해 전달되는 다른 플로우 테이블 엔트리의 개략도이다.
도 1g는 본 발명의 실시예에 따른 SDN에 의해 전달되는 다른 플로우 테이블 엔트리의 개략도이다.
도 1h는 본 발명의 실시예에 따른 SDN에 의해 전달되는 다른 플로우 테이블 엔트리의 개략도이다.
도 1i는 본 발명의 실시예에 따른 플로우 테이블 엔트리의 분할의 개략도이다.
도 1j는 본 발명의 실시예에 따른 플로우 테이블 엔트리의 분할의 다른 개략도이다.
도 2a는 본 발명의 실시예에 따른 다른 플로우 테이블 관리 방법의 개략적인 플로우차트이다.
도 2b는 본 발명의 실시예에 따른 오픈플로우 스위치에 의해 저장되는 플로우 테이블의 개략도이다.
도 2c는 본 발명의 실시예에 따른 SDN에 의해 전달되는 다른 플로우 테이블 엔트리의 개략도이다.
도 3a는 본 발명의 실시예에 따른 다른 플로우 테이블 관리 방법의 개략적인 플로우차트이다.
도 3b는 본 발명의 실시예에 따른 플로우 테이블 엔트리들의 결합의 개략도이다.
도 3c는 본 발명의 실시예에 따른 플로우 테이블 엔트리들의 결합의 다른 개략도이다.
도 4는 본 발명의 실시예에 따른 다른 플로우 테이블 관리 방법의 개략적인 플로우차트이다.
도 5는 본 발명의 실시예에 따른 다른 플로우 테이블 관리 방법의 개략적인 플로우차트이다.
도 6은 본 발명의 실시예에 따른 다른 플로우 테이블 관리 방법의 개략적인 플로우차트이다.
도 7은 본 발명의 실시예에 따른 다른 플로우 테이블 관리 방법의 개략적인 플로우차트이다.
도 8a는 본 발명의 실시예에 따른 SDN 제어기의 개략적인 구조도이다.
도 8b는 본 발명의 실시예에 따른 다른 SDN 제어기의 개략적인 구조도이다.
도 9a는 본 발명의 실시예에 따른 오픈플로우 스위치의 개략적인 구조도이다.
도 9b는 본 발명의 실시예에 따른 다른 오픈플로우 스위치의 개략적인 구조도이다.
도 9c는 본 발명의 실시예에 따른 다른 오픈플로우 스위치의 개략적인 구조도이다.
도 10은 본 발명의 실시예에 따른 가상 계층 디바이스의 개략적인 구조도이다.
도 11은 본 발명의 실시예에 따른 다른 SDN 제어기의 개략적인 구조도이다.
도 12는 본 발명의 실시예에 따른 다른 SDN 제어기의 개략적인 구조도이다.
도 13은 본 발명의 실시예에 따른 다른 오픈플로우 스위치의 개략적인 구조도이다.
도 14는 본 발명의 실시예에 따른 다른 오픈플로우 스위치의 개략적인 구조도이다.
도 15는 본 발명의 실시예에 따른 다른 가상 계층 디바이스의 개략적인 구조도이다.
도 16은 본 발명의 실시예에 따른 다른 가상 계층 디바이스의 개략적인 구조도이다.
도 17은 본 발명의 실시예에 따른 통신 시스템의 개략도이다.
도 18은 본 발명의 실시예에 따른 다른 통신 시스템의 개략도이다.
본 발명의 실시예들은 플로우 테이블 관리 방법, 디바이스 및 시스템을 제공하여, SDN 제어기에 의해 오픈플로우 스위치로 전달되는 플로우 테이블 엔트리들의 데이터 볼륨을 감소시키고, 그에 의해 제어 채널의 오버헤드를 감소시켜 제어 채널의 정체 위험을 감소시키고, 플로우 테이블 엔트리들을 전달하기 위해 점유되는 SDN 제어기 및 오픈플로우 스위치의 네트워크 처리 리소스들을 감소시킨다.
본 기술분야의 통상의 기술자가 본 발명에서의 기술적 해결책들을 더 양호하게 이해하게 하기 위해서, 다음에, 본 발명의 실시예들의 첨부 도면들을 참조하여 본 발명의 실시예들에서의 기술적 해결책들을 명확하고 완전하게 설명한다. 명백하게도, 설명된 실시예들은 본 발명의 실시예들의 전부가 아니라 일부일 뿐이다. 창조적 노력 없이 본 발명의 실시예들에 기초하여 본 기술분야의 통상의 기술자에 의해 획득되는 모든 다른 실시예들은 본 발명의 보호 범위 내에 있을 것이다.
상세한 설명이 아래에 별개로 제공된다.
본 발명의 첨부 도면들, 청구항들 및 명세서에서, "제1", "제2", "제3", "제4" 등의 용어들은 상이한 오브젝트들을 구별하는 것으로 의도되며, 특정 순서를 표시하지는 않는다. 추가로, "포함하는(including)"이라는 용어 또는 그것의 임의의 다른 변형은 비배타적인 포함을 커버하는 것으로 의도된다. 예를 들어, 일련의 단계들 또는 유닛들을 포함하는 디바이스, 제품, 시스템, 방법 또는 프로세스는 열거된 단계들 또는 유닛들로 제한되지는 않으며, 대신에 열거되지 않은 단계들 또는 유닛들을 포함할 수도 있다.
본 발명에 따른 플로우 테이블 관리 방법의 실시예에서, 플로우 테이블 관리 방법은, SDN 제어기에 의해, 제1 플로우 테이블 엔트리를 생성하는 단계 - 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -; 및 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하는 단계 - 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송함 - 를 포함한다.
먼저, 도 1a를 참조하면, 도 1a는 본 발명의 실시예에 따른 플로우 테이블 관리 방법의 개략적인 플로우차트이다. 도 1a에 도시된 바와 같이, 본 발명의 이 실시예에 따른 플로우 테이블 관리 방법은 다음의 내용을 포함할 수 있다.
101: SDN 제어기가 제1 플로우 테이블 엔트리를 생성하는 단계.
SDN 제어기는 미리 설정된 정책에 기초하여 플로우 테이블 엔트리(후속 참조의 용이성을 위해 제1 플로우 테이블 엔트리로 지칭될 수 있음)를 생성할 수 있거나, 또는 SDN 제어기는 사용자 명령어 또는 오픈플로우 스위치에 의해 트리거될 때 제1 플로우 테이블 엔트리를 생성할 수 있다. 분명하게도, SDN 제어기는 다른 조건에 의해 트리거될 때 하나 이상의 플로우 테이블 엔트리를 생성할 수 있다.
SDN 아키텍처에서, SDN 제어기는 네트워크에서의 데이터 패킷의 전송 경로를 결정한다. 오픈플로우 스위치는 수개의 플로우 테이블(Flow Tables)을 로컬 저장하고, 각각의 플로우 테이블은 수개의 플로우 테이블 엔트리를 포함할 수 있다. 오픈플로우 스위치에 의해 포워딩될 필요가 있는 데이터 패킷(예를 들어, 패킷)에 매칭하는 플로우 테이블 엔트리를 오픈플로우 스위치에 로컬 저장된 플로우 테이블이 갖는 경우, 오픈플로우 스위치는, 플로우 테이블에 있으며 데이터 패킷에 매칭하는 플로우 테이블 엔트리에 기초하여, 데이터 패킷에 대해 포워딩 처리를 수행한다. 추가로, 로컬 저장된 플로우 테이블에서의 어떠한 플로우 테이블 엔트리도 데이터 패킷에 매칭하지 않는 경우, 오픈플로우 스위치는 대응하는 포워딩 처리 방식을 결정하기 위해 데이터 패킷 또는 데이터 패킷의 패킷 헤더를 SDN 제어기로 송신할 수 있다. SDN 제어기는 데이터 패킷에 매칭하는 새로운 플로우 테이블 엔트리를 오픈플로우 스위치로 피드백한다. 다음에, 오픈플로우 스위치는, SDN 제어기에 의해 전달되며 데이터 패킷에 매칭하는 새로운 플로우 테이블 엔트리에 따라 데이터 패킷에 대해 포워딩 처리를 수행한다. 이것은, 오픈플로우 네트워크에서의 디바이스들이 분산형 방식으로 배치되며, 중앙집중형 방식으로 관리 및 제어될 수 있다는 것을 의미한다. 이 경우, 오픈플로우 네트워크는 소프트웨어 정의 형태로 이루어지고, 따라서 오픈플로우 네트워크는 SDN으로 또한 지칭된다. SDN은 네트워크 사용자가 데이터 패킷을 라우팅하는 방법, 로드 밸런스를 구현하는 방법, 액세스 제어를 수행하는 방법 등을 결정하는 것을 가능하게 하기 위해 프로그래머블 인터페이스를 제공할 수 있다. 이러한 방식으로, 일반적으로, SDN에 새로운 라우팅 프로토콜 또는 보안 알고리즘을 배치하기 위해 SDN 제어기 상에 단지 수백 라인의 코드가 기입될 필요가 있다. 그러므로, SDN의 개방성은 새로운 네트워크 애플리케이션들의 빠른 개발 및 배치를 가속화하는 것을 돕는다.
본 발명의 실시예들에서 언급된 오픈플로우 스위치는 오픈플로우 프로토콜을 지원하는 스위칭 디바이스라는 점에 유의해야 한다. 오픈플로우 프로토콜을 지원하는 스위칭 디바이스는 예를 들어 오픈플로우 프로토콜을 지원하는 라우터나 스위치와 같은 데이터 패킷(예를 들어, 패킷) 포워딩 디바이스일 수 있다.
102: SDN 제어기가 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하는 단계.
오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수이다. 제1 플로우 테이블 엔트리를 반송하는 오픈플로우 프로토콜 메시지는 예를 들어 플로우 수정(flow_mod) 메시지 또는 다른 오픈플로우 프로토콜 메시지일 수 있다.
제1 플로우 테이블 엔트리는 표준 플로우 테이블 엔트리의 데이터 구조와 동일한 데이터 구조를 가질 수 있다는 점이 이해될 수 있다. 예를 들어, 제1 플로우 테이블 엔트리에 포함된 프로토콜 필드의 타입 및 제1 플로우 테이블 엔트리에서의 모든 타입의 프로토콜 필드들 사이의 위치 관계는 표준 플로우 테이블 엔트리의 것들과 동일할 수 있다. 그러나, 제1 플로우 테이블 엔트리에서의 프로토콜 필드들 중 일부 또는 전부에서 반송되는 정보의 타입은 표준 플로우 테이블 엔트리에서의 것과 상이하다. 구체적으로, 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 필드는 이 필드의 실제 값의 인덱스를 반송하는 한편, 표준 플로우 테이블 엔트리에서의 각각의 필드는 이 필드의 실제 값을 반송한다.
본 발명의 실시예들에서의 N은 예를 들어 1, 2, 5, 8, 10 또는 다른 값과 동일할 수 있다.
제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 임의의 N개의 필드일 수 있다. 제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 인접한 N개의 필드, 부분적으로 인접한 N개의 필드 또는 인접하지 않은 N개의 필드일 수 있는데, 즉 제1 필드 세트에서의 필드들이 제1 플로우 테이블 엔트리에서 임의로 분산될 수 있는 위치들일 수 있고, 이는 다양한 실제 애플리케이션 시나리오들의 유연한 요건들을 더 유연하게 충족시키는 것을 돕는다. N개의 필드는 예를 들어 다음의 필드들: 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 매체 액세스 제어(MAC, Media Access Control) 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드 등 중 적어도 하나를 포함할 수 있다. 제1 필드 세트에서의 필드의 실제 값은 이 필드가 반송해야 하는 표준 값을 나타낸다. 예를 들어, 포트 번호 필드의 실제 값은 포트 번호이고, 소스 IP 어드레스 필드의 실제 값은 소스 IP 어드레스이고, 목적지 IP 어드레스 필드의 실제 값은 목적지 IP 어드레스이고, 목적지 MAC 어드레스 필드의 실제 값은 목적지 MAC 어드레스이고, 가상 로컬 영역 네트워크 식별자 필드의 실제 값은 가상 로컬 영역 네트워크 식별자이고, 소스 MAC 어드레스 필드의 실제 값은 소스 MAC 어드레스이고, 다른 필드의 실제 값은 그에 따라 추론된다. 본 발명의 이 실시예에서, SDN 제어기에 의해 전달되는 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 필드는 이 필드의 실제 값을 반송하지 않고, 대신에 이 필드의 실제 값의 인덱스를 반송하는데, 여기서 인덱스는 이 필드의 실제 값이 인덱싱될 수 있는 정보이다. 제1 필드 세트가 포트 번호 필드를 포함한다고 가정하면, 포트 번호 필드는 포트 번호를 반송하지 않고, 대신에 포트 번호가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 소스 IP 어드레스 필드를 포함하고, 소스 IP 어드레스 필드는 소스 IP 어드레스를 반송하지 않고, 대신에 소스 IP 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 목적지 IP 어드레스 필드를 포함하고, 목적지 IP 어드레스 필드는 목적지 IP 어드레스를 반송하지 않고, 대신에 목적지 IP 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 가상 로컬 영역 네트워크 식별자 필드를 포함하고, 가상 로컬 영역 네트워크 식별자 필드는 가상 로컬 영역 네트워크 식별자를 반송하지 않고, 대신에 가상 로컬 영역 네트워크 식별자가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 목적지 MAC 어드레스 필드를 포함하고, 목적지 MAC 어드레스 필드는 목적지 MAC 어드레스를 반송하지 않고, 대신에 목적지 MAC 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 소스 MAC 어드레스 필드를 포함하고, 소스 MAC 어드레스 필드는 소스 MAC 어드레스를 반송하지 않고, 대신에 소스 MAC 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 제1 필드 세트가 다른 프로토콜 필드를 더 포함하는 경우, 관련 경우가 그에 따라 추론된다.
실제 값의 인덱스는 다양한 타입들을 가질 수 있으며, 오픈플로우 스위치가 실제 값의 인덱스에 따라 실제 값을 획득할 수 있는 한, 요건이 충족될 수 있다는 점이 이해될 수 있다. 본 발명의 일부 구현 방식들에서, 실제 값의 인덱스는 예를 들어 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자를 포함할 수 있는데, 즉 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 임의의 필드에서 반송되는 인덱스는 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있다. N이 1보다 큰 경우, 제1 필드 세트에서의 필드들에서 반송되는 인덱스들은 완전히 동일하거나 부분적으로 동일하거나 또는 완전히 상이할 수 있다는 점이 이해될 수 있다(예를 들어, 제1 필드 세트에서의 필드들에서 반송되는 인덱스들은 구체적으로 동일한 플로우 테이블 엔트리 식별자일 수 있음). 필드의 실제 값의 인덱스가 오픈플로우 스위치에 이미 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자인 경우, 오픈플로우 스위치에 의한 필드의 실제 값에 대한 인덱싱의 방식은 크게 단순화될 수 있을 뿐만 아니라, 오픈플로우 스위치에 의한 필드의 실제 값에 대한 인덱싱의 효율은 개선될 수 있다는 점이 이해될 수 있다. 또한, 플로우 테이블 엔트리 식별자는 일반적으로 비교적 작은 데이터 볼륨을 갖는데, 이는 SDN 제어기가 전달된 제1 플로우 테이블 엔트리의 데이터 볼륨을 비교적 바람직하게 제어하는 것을 돕는다.
본 발명의 일부 구현 방식들에서, 제1 플로우 테이블 엔트리에서의 제2 필드 세트의 각각의 필드는 이 필드의 다수의 실제 값을 추가로 반송할 수 있다. 제2 필드 세트는 M개의 필드를 포함하고, M은 양의 정수이다. 필드들의 실제 값들의 예들은 위에서 설명되어 있다. 제2 필드 세트에서의 각각의 필드가 이 필드의 다수의 실제 값을 추가로 반송할 수 있기 때문에, 그것은 제1 플로우 테이블 엔트리가 다수의 플로우 테이블 엔트리로 분할될 수 있다는 것을 등가적으로 표시하며, 이는 또한 SDN 제어기가 전달된 제1 플로우 테이블 엔트리의 데이터 볼륨을 비교적 바람직하게 제어하는 것을 돕는다는 점이 이해될 수 있다. 예를 들어, 제1 플로우 테이블 엔트리에서의 제2 필드 세트는 목적지 MAC 어드레스 필드를 포함하고, 목적지 MAC 어드레스 필드는 3개의 목적지 MAC 어드레스를 반송한다(예를 들어, 목적지 MAC 어드레스 필드에서 반송되는 정보는 다음과 같이 192.168.0.2, 192.168.0.3 및 192.168.0.4이거나, 또는 목적지 MAC 어드레스 필드에서 반송되는 정보는 다음과 같이 192.168.0.2 내지 192.168.0.4이며, 전술한 예들에서의 2가지 방식 양쪽 모두는 목적지 MAC 어드레스 필드가 3개의 목적지 MAC 어드레스를 반송한다는 것을 나타낼 수 있고; 분명하게도, 목적지 MAC 어드레스 필드가 3개의 MAC 어드레스를 반송하는 것은 다른 방식으로 표현될 수도 있다). 이 시나리오에서, 오픈플로우 스위치는 제1 플로우 테이블 엔트리를 4개의 플로우 테이블 엔트리로 분할할 수도 있다. 3개의 플로우 테이블 엔트리의 목적지 MAC 어드레스 필드들은 각각 전술한 3개의 목적지 MAC 어드레스 중 상이한 어드레스를 반송하며, 3개의 플로우 테이블 엔트리의 다른 필드들은 동일하다. 분명하게도, 3개의 플로우 테이블 엔트리의 다른 필드가 다수의 실제 값을 또한 반송하는 경우, 3개의 플로우 테이블 엔트리는 각각 유사한 방식에 따라 분할될 수 있다. 예를 들어, 분할을 통해 획득되는 3개의 플로우 테이블 엔트리의 가상 로컬 영역 네트워크 식별자 필드는 2개의 가상 로컬 영역 네트워크 식별자를 반송하며, 3개의 플로우 테이블 엔트리 중의 각각의 플로우 테이블 엔트리는 2개의 플로우 테이블 엔트리로 추가로 분할될 수 있다. 특정 분할 방식이 도 1i 및 도 1j에 도시될 수 있다. 분할은, 획득된 플로우 테이블 엔트리의 각각의 필드가 단지 하나의 실제 값 또는 이 필드의 하나의 실제 값의 인덱스를 반송할 때에만 중단될 수 있다.
본 발명의 실시예들에서의 M은 예를 들어 1, 2, 5, 8, 10 또는 다른 값과 동일할 수 있다.
제1 플로우 테이블 엔트리에서의 제2 필드 세트에 포함된 M개의 필드는, 제1 플로우 테이블 엔트리에 있으며 제1 필드 세트에서의 임의의 필드와는 상이한 임의의 M개의 필드일 수 있다. 제2 필드 세트에 포함된 M개의 필드는 제1 플로우 테이블 엔트리에서의 인접한 M개의 필드, 부분적으로 인접한 M개의 필드 또는 인접하지 않은 M개의 필드일 수 있다. M개의 필드는 예를 들어 다음의 필드들: 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드, 프로토콜 필드 등 중 적어도 하나를 포함할 수 있다.
제2 필드 세트와 제1 필드 세트의 교집합(intersection)은 공집합이다.
제1 플로우 테이블 엔트리의 수개의 가능한 구조의 예들이 첨부 도면들을 이용함으로써 아래에 제공된다.
도 1b 내지 도 1e를 참조하면, 도 1b는 제1 플로우 테이블 엔트리에서의 제1 필드 세트가 하나의 필드를 포함하고, 이 필드가 이 필드의 실제 값의 인덱스를 반송하는 예를 도시한다. 도 1c는 제1 플로우 테이블 엔트리에서의 제1 필드 세트가 2개의 인접 필드를 포함하고, 2개의 인접 필드 중의 각각의 필드가 이 필드의 실제 값의 인덱스를 반송하는 예를 도시한다. 도 1d는 제1 플로우 테이블 엔트리에서의 제1 필드 세트가 t1개의 인접 필드(여기서, t1은 2보다 큰 양의 정수임)를 포함하고, t1개의 인접 필드 중의 각각의 필드가 이 필드의 실제 값의 인덱스를 반송하는 예를 도시한다. 도 1e는 제1 플로우 테이블 엔트리에서의 제1 필드 세트가 2개의 인접하지 않은 필드를 포함하고, 2개의 인접하지 않은 필드 중의 각각의 필드가 이 필드의 실제 값의 인덱스를 반송하는 예를 도시한다. 제1 필드 세트가 더 많은 필드를 포함하는 시나리오가 그에 따라 추론될 수 있다는 점이 이해될 수 있다.
다른 예에 있어서, 도 1f 내지 도 1h를 참조하면, 도 1f는 제1 플로우 테이블 엔트리가 제1 필드 세트 및 제2 필드 세트를 포함하고, 제1 필드 세트가 하나의 필드를 포함하고, 이 필드가 이 필드의 실제 값의 인덱스를 반송하고; 제2 필드 세트도 또한 하나의 필드를 포함하고, 이 필드가 이 필드를 기술하는데 이용되는 다수의 실제 값을 반송하는 예를 도시한다. 도 1g는 제1 플로우 테이블 엔트리에서의 제1 필드 세트가 다수의 인접 필드를 포함하고, 다수의 인접 필드 중의 각각의 필드가 이 필드의 실제 값의 인덱스를 반송하는 한편, 제2 필드 세트는 하나의 필드를 포함하고, 이 필드가 이 필드의 다수의 실제 값을 반송하는 예를 도시한다. 도 1h는 제1 플로우 테이블 엔트리에서의 제1 필드 세트가 다수의 인접 필드를 포함하고, 다수의 인접 필드 중의 각각의 필드가 이 필드의 실제 값의 인덱스를 반송하는 한편; 제2 필드 세트도 또한 다수의 필드를 포함하고, 제2 필드 세트에 포함된 다수의 필드 중의 각각의 필드가 이 필드의 다수의 실제 값을 반송하는 예를 도시한다. 제1 필드 세트 및 제2 필드 세트가 더 많은 필드를 포함하는 시나리오가 그에 따라 추론될 수 있다는 점이 이해될 수 있다.
본 발명의 일부 구현 방식들에서, 제1 플로우 테이블 엔트리를 생성하기 이전에, SDN 제어기는 오픈플로우 스위치로부터 제1 패킷을 추가로 수신할 수 있고, 미리 설정된 처리 정책에 따라 제1 패킷의 라우팅 명령어 세트를 결정할 수 있다. 제1 플로우 테이블 엔트리의 명령어(Instructions) 필드는 라우팅 명령어 세트 또는 라우팅 명령어 세트의 인덱스를 반송하며, 여기서 인덱스는 예를 들어 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있다. 또한, 제1 플로우 테이블 엔트리를 획득한 이후에, 오픈플로우 스위치는 제1 플로우 테이블 엔트리의 명령어 필드에서 반송되는 라우팅 명령어 세트(또는 라우팅 명령어 세트의 인덱스에 기초하여 획득된 라우팅 명령어 세트)에 기초하여 제1 패킷을 처리할 수 있다.
예를 들어, SDN 제어기에 의해, 오픈플로우 스위치로부터 제1 패킷을 수신하거나 오픈플로우 스위치로부터 제1 패킷의 패킷을 수신하는 것은, SDN 제어기에 의해, 제1 패킷 또는 제1 패킷의 패킷 헤더를 반송하며 오픈플로우 스위치로부터의 것인 오픈플로우 프로토콜 메시지(여기서, 오픈플로우 프로토콜 메시지는 예를 들어 packet_in(packet_in) 메시지 또는 다른 오픈플로우 프로토콜 메시지일 수 있음)를 수신하는 것을 포함할 수 있다. 분명하게도, 오픈플로우 프로토콜 메시지는 하나 이상의 다른 패킷 또는 패킷 헤더를 추가로 반송할 수 있다. 분명하게도, 오픈플로우 프로토콜 메시지는 다른 정보를 추가로 반송할 수 있다.
본 발명의 일부 구현 방식들에서, 동일한 플로우 테이블 엔트리에 대해, 동일한 플로우 테이블 엔트리를 식별하는데 이용되며 오픈플로우 스위치 및 SDN 제어기에 있는 플로우 테이블 엔트리 식별자들은 동일할 수도 있고 합의된 매핑 관계(agreed mapping relationship)를 가질 수도 있다. 특정된 매핑 관계를 갖는 플로우 테이블 엔트리 식별자들이 동일한 플로우 테이블 엔트리를 식별하기 위해 오픈플로우 스위치 및 SDN 제어기에서 이용되는 경우, 오픈플로우 스위치 및 SDN 제어기 양쪽 모두는 특정된 매핑 관계를 이용함으로써 피어 엔드 디바이스에서의 동일한 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자를 추론할 수 있다.
하나의 SDN 제어기는 다수의 오픈플로우 스위치를 관리할 수 있다(즉, 동일한 SDN 제어기는 다수의 오픈플로우 스위치에 플로우 테이블 엔트리들을 전달할 수 있다). 하나의 오픈플로우 스위치는 하나 이상의 SDN 제어기에 의해 관리될 수 있다(즉, 다수의 SDN 제어기는 동일한 오픈플로우 스위치에 플로우 테이블 엔트리들을 전달할 수 있다).
본 발명의 일부 구현 방식들에서, SDN 제어기와 오픈플로우 스위치 사이에 교환되는 정보는 피어 엔드에 도달하도록 (가상 계층 디바이스가 존재하는 경우) 가상 계층 디바이스에 의해 포워딩될 수 있다. 가상 계층 디바이스는 SDN 제어기와 오픈플로우 스위치 사이에 교환되는 정보를 투명하게 전송할 수 있거나, 또는 SDN 제어기와 오픈플로우 스위치 사이에 교환되는 정보에 대해 특정 중계 처리(플로우 테이블 엔트리의 분할 및 플로우 테이블 엔트리들의 결합과 같은 중계 처리)를 수행할 수 있고, 다음에 이 정보를 피어 엔드에 포워딩한다. 예를 들어, SDN 제어기에 의해 오픈플로우 스위치로 송신된 오픈플로우 프로토콜 메시지는 오픈플로우 스위치에 도달하도록 (가상 계층 디바이스가 존재하는 경우) 가상 계층 디바이스에 의해 포워딩될 수 있다. 유사하게, 오픈플로우 스위치에 의해 SDN 제어기로 송신된 오픈플로우 프로토콜 메시지는 가상 계층 디바이스에 의해 SDN 제어기로 포워딩될 수 있으며, 분명하게도 다른 중계 디바이스가 추가로 존재할 수 있다.
본 발명의 이 실시예에서의 가상 계층 디바이스는 물리적 오픈플로우 스위치에 대해 가상화를 수행할 수 있는 디바이스일 수 있다. 가상 계층 디바이스는 예를 들어 하나의 물리적 오픈플로우 스위치를 다수의 가상 오픈플로우 스위치로 가상화할 수 있다. 본 발명의 이 실시예에서의 기술적 해결책에서, 주요 포커스는 가상 계층 디바이스가 SDN 제어기와 오픈플로우 스위치 사이에 교환되는 정보에 대해 중계 포워딩을 수행한다는 이슈이다.
이 실시예에서의 해결책에서, SDN 제어기에 의해 오픈플로우 스위치로 송신된 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에 대해, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값을 반송하는 대신에 제1 필드 세트에서의 실제 값의 인덱스를 반송한다는 것을 알 수 있다. 기술적 구현에서, 필드의 실제 값의 인덱스의 데이터 볼륨은 일반적으로 이 필드의 실제 값의 데이터 볼륨보다 더 작거나 심지어는 훨씬 더 작다. 그러므로, 이 실시예에서 플로우 테이블 엔트리를 전달하는 메커니즘은 SDN 제어기와 오픈플로우 스위치 사이의 제어 채널의 오버헤드를 감소시키는 것을 돕고, 그에 의해 제어 채널의 정체 위험을 감소시키고, 또한 스위칭 디바이스의 네트워크 리소스들의 소모를 감소시키는 것을 돕고, 복잡한 네트워킹의 요건을 충족시키는 것을 돕는다.
본 발명의 플로우 테이블 관리 방법의 다른 실시예에서, 플로우 테이블 관리 방법은, 오픈플로우 스위치에 의해, 제1 플로우 테이블 엔트리를 반송하는 오픈플로우 프로토콜 메시지를 수신하는 단계 - 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송할 수 있고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -; 제1 필드 세트에서의 실제 값의 인덱스에 기초하여 제1 필드 세트에서의 실제 값을 획득하는 단계; 및 제1 필드 세트에서의 실제 값의 것이며 제1 플로우 테이블 엔트리에서의 제1 필드 세트에서 반송되는 인덱스를 제1 필드 세트에서의 실제 값으로 대체하는 단계를 포함할 수 있다.
먼저, 도 2a를 참조하면, 도 2a는 본 발명의 다른 실시예에 따른 다른 플로우 테이블 관리 방법의 개략적인 플로우차트이다. 도 2a에 도시된 바와 같이, 본 발명의 다른 실시예에 따른 다른 플로우 테이블 관리 방법은 다음의 내용을 포함할 수 있다.
201: 오픈플로우 스위치가 제1 플로우 테이블 엔트리를 반송하는 오픈플로우 프로토콜 메시지를 수신하는 단계.
제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송할 수 있고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수이다. N은 예를 들어 1, 2, 5, 8, 10 또는 다른 값과 동일할 수 있다.
제1 플로우 테이블 엔트리를 반송하는 오픈플로우 프로토콜 메시지는 예를 들어 flow_mod 메시지 또는 다른 오픈플로우 프로토콜 메시지일 수 있다.
SDN 제어기는 능동적으로 플로우 테이블 엔트리를 오픈플로우 스위치로 전달할 수 있다. SDN 제어기는, 사용자에 의해 명령될 때 또는 오픈플로우 스위치에 의해 트리거될 때, 플로우 테이블 엔트리를 오픈플로우 스위치로 전달할 수 있다. 분명하게도, SDN 제어기는 다른 조건에 의해 트리거될 때 플로우 테이블 엔트리를 오픈플로우 스위치로 전달할 수 있다. 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리는 SDN 제어기에 의해 생성될 수 있거나, 또는 제1 플로우 테이블 엔트리는 SDN 제어기 또는 다수의 SDN 제어기에 의해 전달된 다수의 플로우 테이블 엔트리를 결합함으로써 가상 계층 디바이스(또는 다른 중계 디바이스)에 의해 획득될 수 있다.
제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 임의의 N개의 필드일 수 있다. 제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 인접한 N개의 필드, 부분적으로 인접한 N개의 필드 또는 인접하지 않은 N개의 필드일 수 있다. N개의 필드는 예를 들어 다음의 필드들: 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드, 프로토콜 필드 등 중 적어도 하나를 포함할 수 있다.
202: 오픈플로우 스위치가 제1 필드 세트에서의 실제 값의 인덱스에 기초하여 제1 필드 세트에서의 실제 값을 획득하는 단계.
실제 값의 인덱스는 다양한 타입들을 가질 수 있으며, 오픈플로우 스위치가 실제 값의 인덱스에 따라 실제 값을 획득할 수 있는 한, 요건이 충족될 수 있다는 점이 이해될 수 있다. 본 발명의 일부 구현 방식들에서, 실제 값의 인덱스는 예를 들어 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자를 포함할 수 있는데, 즉 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 임의의 필드에서 반송되는 인덱스는 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있다. N이 1보다 큰 경우, 제1 필드 세트에서의 필드들에서 반송되는 인덱스들은 완전히 동일하거나 부분적으로 동일하거나 또는 완전히 상이할 수 있다는 점이 이해될 수 있다. 예를 들어, 제1 필드 세트에서의 필드들에서 반송되는 인덱스들은 구체적으로 동일한 플로우 테이블 엔트리 식별자일 수 있다. 필드의 실제 값의 인덱스가 오픈플로우 스위치에 이미 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자인 경우, 오픈플로우 스위치에 의한 필드의 실제 값에 대한 인덱싱의 방식은 크게 단순화될 수 있을 뿐만 아니라, 오픈플로우 스위치에 의한 필드의 실제 값에 대한 인덱싱의 효율은 개선될 수 있다는 점이 이해될 수 있다. 또한, 플로우 테이블 엔트리 식별자는 일반적으로 비교적 작은 데이터 볼륨을 갖는데, 이는 SDN 제어기가 전달된 제1 플로우 테이블 엔트리의 데이터 볼륨을 비교적 바람직하게 제어하는 것을 돕는다.
제1 필드 세트에서의 필드의 실제 값은 이 필드가 반송해야 하는 표준 값을 나타낸다. 예를 들어, 포트 번호 필드의 실제 값은 포트 번호이고, 소스 IP 어드레스 필드의 실제 값은 소스 IP 어드레스이고, 목적지 IP 어드레스 필드의 실제 값은 목적지 IP 어드레스이고, 목적지 MAC 어드레스 필드의 실제 값은 목적지 MAC 어드레스이고, 가상 로컬 영역 네트워크 식별자 필드의 실제 값은 가상 로컬 영역 네트워크 식별자이고, 소스 MAC 어드레스 필드의 실제 값은 소스 MAC 어드레스이고, 다른 필드의 실제 값은 그에 따라 추론된다. 본 발명의 이 실시예에서, SDN 제어기에 의해 전달되는 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 필드는 이 필드의 실제 값을 반송하지 않고, 대신에 이 필드의 실제 값의 인덱스를 반송하는데, 여기서 인덱스는 이 필드의 실제 값이 인덱싱될 수 있는 정보이다. 제1 필드 세트가 포트 번호 필드를 포함한다고 가정하면, 포트 번호 필드는 포트 번호를 반송하지 않고, 대신에 포트 번호가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 소스 IP 어드레스 필드를 포함하고, 소스 IP 어드레스 필드는 소스 IP 어드레스를 반송하지 않고, 대신에 소스 IP 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 목적지 IP 어드레스 필드를 포함하고, 목적지 IP 어드레스 필드는 목적지 IP 어드레스를 반송하지 않고, 대신에 목적지 IP 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 가상 로컬 영역 네트워크 식별자 필드를 포함하고, 가상 로컬 영역 네트워크 식별자 필드는 가상 로컬 영역 네트워크 식별자를 반송하지 않고, 대신에 가상 로컬 영역 네트워크 식별자가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 목적지 MAC 어드레스 필드를 포함하고, 목적지 MAC 어드레스 필드는 목적지 MAC 어드레스를 반송하지 않고, 대신에 목적지 MAC 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 소스 MAC 어드레스 필드를 포함하고, 소스 MAC 어드레스 필드는 소스 MAC 어드레스를 반송하지 않고, 대신에 소스 MAC 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 제1 필드 세트가 다른 프로토콜 필드를 더 포함하는 경우, 관련 경우가 그에 따라 추론된다.
본 발명의 일부 실시예들에서, 인덱스가 오픈플로우 스위치에 이미 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자인 경우, 제1 필드 세트에서의 실제 값의 인덱스에 기초하여 제1 필드 세트에서의 실제 값을 획득하는 단계는, 플로우 테이블 엔트리 식별자에 기초하여, 플로우 테이블 엔트리 식별자에 의해 표현된 플로우 테이블 엔트리에 있으며 제1 필드 세트와 동일한 프로토콜 타입을 갖는 제3 필드 세트에 채워진 실제 값을 획득하는 단계를 포함할 수 있고, 제3 필드 세트 및 제1 필드 세트에 있으며 동일한 프로토콜 타입을 갖는 필드들은 동일한 실제 값을 갖는다. 제3 필드 세트 및 제1 필드 세트는 동일한 수량의 필드들을 갖고, 제3 필드 세트 및 제1 필드 세트에 포함된 필드들의 프로토콜 타입들은 일대일 대응관계에 있다는 점이 이해될 수 있다.
203: 오픈플로우 스위치가, 제1 필드 세트에서의 실제 값의 것이며 제1 플로우 테이블 엔트리에서의 제1 필드 세트에서 반송되는 인덱스를 제1 필드 세트에서의 실제 값으로 대체하는 단계.
또한, 오픈플로우 스위치는, 제1 필드 세트의 실제 값의 것이며 제1 필드 세트에서 반송되는 인덱스가 제1 필드 세트의 실제 값으로 대체된 이후에 획득되는 제1 플로우 테이블 엔트리를 저장할 수 있는데, 즉 획득된 실제 값이 제1 필드 세트에 채워진 이후에 획득되는 제1 플로우 테이블 엔트리를 저장할 수 있다.
본 발명의 일부 실시예들에서, 오픈플로우 스위치는, 저장된 플로우 테이블 엔트리가 오픈플로우 스위치와 SDN 제어기 사이에 동기화되도록 저장된 제1 플로우 테이블 엔트리 또는 제1 플로우 테이블 엔트리의 식별자를 SDN 제어기로 추가로 송신할 수 있다. 분명하게도, SDN 제어기가 오픈플로우 스위치의 방법과 유사한 방법에 따라 동일한 제1 플로우 테이블 엔트리를 또한 획득하고 저장하는 경우, 오픈플로우 스위치와 SDN 제어기 사이의 저장된 플로우 테이블 엔트리의 동기화가 구현될 수 있다. 이 경우, 오픈플로우 스위치는 SDN 제어기에 저장된 제1 플로우 테이블 엔트리 또는 이 제1 플로우 테이블 엔트리의 식별자를 SDN 제어기로 송신할 필요가 없을 수 있다.
본 발명의 일부 실시예들에서, 오픈플로우 스위치가 제1 플로우 테이블 엔트리를 수신하기 이전에, 이 방법은 제1 패킷 또는 제1 패킷의 패킷 헤더를 SDN 제어기로 송신하는 단계를 더 포함할 수 있다. 제1 플로우 테이블 엔트리의 명령어 필드는 제1 패킷을 처리하는데 이용되는 라우팅 명령어 세트 또는 라우팅 명령어 세트의 인덱스를 반송한다. 이 방법은, 오픈플로우 스위치에 의해, 라우팅 명령어 세트에 기초하여 제1 패킷을 처리하는 단계를 더 포함할 수 있다.
예를 들어, SDN 제어기로 제1 패킷을 송신하는 단계는, 제1 패킷을 반송하는 오픈플로우 프로토콜 메시지(오픈플로우 프로토콜 메시지는 예를 들어 packet_in 메시지 또는 다른 오픈플로우 프로토콜 메시지일 수 있음)를 SDN 제어기로 송신하는 단계를 포함할 수 있다.
본 발명의 일부 구현 방식들에서, 동일한 플로우 테이블 엔트리에 대해, 플로우 테이블 엔트리를 식별하는데 이용되며 오픈플로우 스위치 및 SDN 제어기에 있는 플로우 테이블 엔트리 식별자들은 동일할 수도 있고 합의된 매핑 관계를 가질 수도 있고, 오픈플로우 스위치 및 SDN 제어기 양쪽 모두는 특정된 매핑 관계를 이용함으로써 피어 엔드 디바이스에서의 동일한 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자를 추론할 수 있다.
예를 들어, 도 2b에 도시된 바와 같이, 오픈플로우 스위치는 플로우 테이블 1, 플로우 테이블 2, 플로우 테이블 3 등을 저장한다. 각각의 플로우 테이블은 다수의 플로우 테이블 엔트리를 포함한다. 제1 플로우 테이블 엔트리가 도 2c에 도시되어 있다고 가정하면, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 스위치 포트 필드, MAC src 필드 및 IP src 필드를 포함한다. 이러한 모든 필드는 각각의 실제 값들의 인덱스들을 반송하고, 인덱스는 오픈플로우 스위치의 플로우 테이블 엔트리의 식별자이다. 그러므로, 오픈플로우 스위치는, 스위치 포트 필드에서 반송되는 플로우 테이블 엔트리 식별자에 기초하여, 이미 저장된 플로우 테이블 엔트리 1.3을 발견할 수 있고, 이미 저장된 플로우 테이블 엔트리 1.3의 스위치 포트 필드의 실제 값은 제1 플로우 테이블 엔트리의 스위치 포트 필드에서 반송되는 실제 값의 인덱스를 대체하는데 이용된다. 유사하게, 오픈플로우 스위치는, MAC src 필드에서 반송되는 플로우 테이블 엔트리 식별자에 기초하여, 이미 저장된 플로우 테이블 엔트리 2.1을 발견할 수 있고, 이미 저장된 플로우 테이블 엔트리 2.1의 MAC src 필드의 실제 값은 제1 플로우 테이블 엔트리의 MAC src 필드에서 반송되는 실제 값의 인덱스를 대체하는데 이용될 수 있다. 유사하게, 오픈플로우 스위치는, IP src 필드에서 반송되는 플로우 테이블 엔트리 식별자에 기초하여, 이미 저장된 플로우 테이블 엔트리 3.5를 발견할 수 있고, 이미 저장된 플로우 테이블 엔트리 3.5의 IP src 필드의 실제 값은 제1 플로우 테이블 엔트리의 IP src 필드에서 반송되는 실제 값의 인덱스를 대체하는데 이용되거나 한다.
이 실시예에서, SDN 제어기에 의해 오픈플로우 스위치로 송신된 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에 대해, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값을 반송하는 대신에 제1 필드 세트에서의 실제 값의 인덱스를 반송한다는 것을 알 수 있다. 기술적 구현에서, 필드의 실제 값의 인덱스의 데이터 볼륨은 일반적으로 이 필드의 실제 값의 데이터 볼륨보다 더 작거나 심지어는 훨씬 더 작다. 그러므로, 이 실시예에서 플로우 테이블 엔트리를 전달하는 메커니즘은 SDN 제어기와 오픈플로우 스위치 사이의 제어 채널의 오버헤드를 감소시키는 것을 돕고, 그에 의해 제어 채널의 정체 위험을 감소시키고, 또한 스위칭 디바이스의 네트워크 리소스들의 소모를 감소시키는 것을 돕고, 복잡한 네트워킹의 요건을 충족시키는 것을 돕는다.
본 발명의 플로우 테이블 중계 방법의 실시예에서, 플로우 테이블 중계 방법은, 가상 계층 디바이스에 의해, 제1 SDN 제어기로부터 제1 오픈플로우 프로토콜 메시지를 수신하는 단계 - 제1 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 제1 플로우 테이블 엔트리에서의 제1 필드는 제1 필드에서의 실제 값의 인덱스를 반송함 -; 제2 SDN 제어기로부터 제2 오픈플로우(OpenFlow) 프로토콜 메시지를 수신하는 단계 - 제2 오픈플로우 프로토콜 메시지는 제2 플로우 테이블 엔트리를 반송하고, 제2 플로우 테이블 엔트리에서의 제4 필드는 제4 필드에서의 실제 값의 인덱스를 반송함 -; 제1 플로우 테이블 엔트리와 제2 플로우 테이블 엔트리를 제3 플로우 테이블 엔트리로 결합하는 단계; 및 제3 플로우 테이블 엔트리를 반송하는 제3 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하는 단계를 포함한다.
도 3a를 참조하면, 도 3a는 본 발명의 다른 실시예에 따른 다른 플로우 테이블 중계 방법의 개략적인 플로우차트이다. 도 3a에 도시된 바와 같이, 본 발명의 다른 실시예에 따른 다른 플로우 테이블 중계 방법은 다음의 내용을 포함할 수 있다.
301: 가상 계층 디바이스가 제1 SDN 제어기로부터 제1 오픈플로우 프로토콜 메시지를 수신하는 단계.
제1 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송한다.
제1 플로우 테이블 엔트리를 반송하는 제1 오픈플로우 프로토콜 메시지는 예를 들어 제1 flow_mod 메시지 또는 다른 오픈플로우 프로토콜 메시지일 수 있다.
302: 가상 계층 디바이스가 제2 SDN 제어기로부터 제2 오픈플로우 프로토콜 메시지를 수신하는 단계.
제2 오픈플로우 프로토콜 메시지는 제2 플로우 테이블 엔트리를 반송하고, 제2 플로우 테이블 엔트리에서의 제4 필드 세트는 제4 필드 세트에서의 실제 값의 인덱스를 반송한다.
제2 플로우 테이블 엔트리를 반송하는 제2 오픈플로우 프로토콜 메시지는 예를 들어 제3 flow_mod 메시지 또는 다른 오픈플로우 프로토콜 메시지일 수 있다.
303: 가상 계층 디바이스가 제1 플로우 테이블 엔트리와 제2 플로우 테이블 엔트리를 제3 플로우 테이블 엔트리로 결합하는 단계.
304: 가상 계층 디바이스가 제3 플로우 테이블 엔트리를 반송하는 제3 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하는 단계.
각각의 플로우 테이블 엔트리는 다양한 상이한 프로토콜 타입들의 필드들을 갖고, 각각의 플로우 테이블 엔트리는 동일한 수량의 필드들을 갖고, 상이한 플로우 테이블 엔트리들에서의 동일한 프로토콜 타입의 필드들에 채워진 데이터는 동일할 수도 있고 상이할 수도 있다는 점이 이해될 수 있다.
가상 계층 디바이스는 다양한 방식들을 이용함으로써 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리를 제3 플로우 테이블 엔트리로 결합할 수 있다.
소위 다수의 플로우 테이블 엔트리를 결합하는 것은 주로 다수의 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드들에 채워진 데이터를 결합하는 것을 지칭한다. 예를 들어, 제2 플로우 테이블 엔트리 및 제2 플로우 테이블 엔트리 양쪽 모두가 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드 및 다른 프로토콜 타입의 필드를 포함한다고 가정하면, 가상 계층 디바이스는 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 포트 번호 필드들에 채워진 데이터를 결합하고, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 소스 IP 어드레스 필드들에 채워진 데이터를 결합하고, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 목적지 MAC 어드레스 필드들에 채워진 데이터를 결합하고, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 목적지 IP 어드레스 필드들에 채워진 데이터를 결합하고, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 가상 로컬 영역 네트워크 식별자 필드들에 채워진 데이터를 결합하고, 그리고/또는 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 소스 MAC 어드레스 필드들에 채워진 데이터를 결합할 수 있고, 다른 프로토콜 타입의 필드들에 채워진 데이터를 결합하는 방식은 그에 따라 추론될 수 있다.
본 발명의 일부 구현 방식들에서, 가상 계층 디바이스는 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 각각의 필드를 검출할 수 있고, 여기서 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드들에 채워진 데이터가 동일한 경우, 이러한 동일한 채워진 데이터는 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드에 채워지고; 또는 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드들에 채워진 데이터가 상이한 경우, 이러한 상이한 채워진 데이터는 제3 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드에 채워진다. 이러한 방식으로, 제3 플로우 테이블 엔트리에서, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 것이며 동일한 채워진 데이터를 갖는 필드들에 채워진 데이터에 대해, 이 데이터의 단 하나의 조각만이 제3 플로우 테이블 엔트리에서의 대응하는 동일한 프로토콜 타입의 필드에 채워진다. 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 것이며 상이한 채워진 데이터를 갖는 필드들에 채워진 데이터에 대해, 이러한 상이한 채워진 데이터는 제3 플로우 테이블 엔트리에서의 대응하는 동일한 프로토콜 타입의 필드에 채워진다. 이러한 방식으로, 제3 플로우 테이블 엔트리의 데이터 볼륨이 제2 플로우 테이블 엔트리의 데이터 볼륨과 제1 플로우 테이블 엔트리의 데이터 볼륨의 합보다 더 작은 것이 소정 정도로 구현될 수 있다.
예를 들어, 도 3b 및 도 3c에 도시된 바와 같이, 가상 계층 디바이스는 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 각각의 필드를 검출할 수 있다. 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드들에 채워진 동일한 데이터에 대해, 이러한 동일한 채워진 데이터는 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드들(A1 내지 An의 값들을 갖는 필드들)에 채워진다. 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드들(도 3b 및 도 3c에서 B1의 값을 갖는 필드 및 B2의 값을 갖는 필드)에 채워진 상이한 데이터에 대해, 이러한 상이한 채워진 데이터는 (도 3b에 도시된 바와 같이) 제3 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드에 채워진다. 도 3b 및 도 3c는 3개의 플로우 테이블 엔트리가 결합되는 시나리오들의 예들을 도시하고, 더 많은 플로우 테이블 엔트리들을 결합하는 시나리오는, 각각의 해결책에서 2개의 플로우 테이블 엔트리가 결합되는 해결책들로 분할될 수 있다. 결합 방식은 전술한 방식에 따라 추론될 수 있다.
이 실시예에서, SDN 제어기에 의해 오픈플로우 스위치로 송신된 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에 대해, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값을 반송하는 대신에 제1 필드 세트에서의 실제 값의 인덱스를 반송한다는 것을 알 수 있다. 기술적 구현에서, 필드의 실제 값의 인덱스의 데이터 볼륨은 일반적으로 이 필드의 실제 값의 데이터 볼륨보다 더 작거나 심지어는 훨씬 더 작다. 그러므로, 이 실시예에서 플로우 테이블 엔트리를 전달하는 메커니즘은 SDN 제어기와 오픈플로우 스위치 사이의 제어 채널의 오버헤드를 감소시키는 것을 돕고, 그에 의해 제어 채널의 정체 위험을 감소시키고, 또한 스위칭 디바이스의 네트워크 리소스들의 소모를 감소시키는 것을 돕고, 복잡한 네트워킹의 요건을 충족시키는 것을 돕는다. 또한, SDN 제어기와 오픈플로우 스위치 사이의 가상 계층 디바이스는 수개의 플로우 테이블 엔트리를 추가로 결합할 수 있다. 이러한 방식으로, 전송되는 플로우 테이블 엔트리들의 데이터 볼륨이 추가로 감소된다.
본 발명의 실시예는 다른 플로우 테이블 중계 방법을 추가로 제공하는데, 이 플로우 테이블 중계 방법은, 가상 계층 디바이스에 의해, N1개의 SDN 제어기로부터 N2개의 오픈플로우 프로토콜 메시지를 수신하는 단계 - N2개의 오픈플로우 프로토콜 메시지는 N3개의 플로우 테이블 엔트리를 반송하고, N2는 N1 이상의 양의 정수이고, N1은 양의 정수이고, N3은 N2 이상이며 1 초과인 양의 정수임 -; N3개의 플로우 테이블 엔트리를 제1 플로우 테이블 엔트리로 결합하는 단계; 및 제1 플로우 테이블 엔트리를 반송하는 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하는 단계를 포함할 수 있다.
가상 계층 디바이스는 다양한 실현가능한 방식들을 이용함으로써 N3개의 플로우 테이블 엔트리를 제1 플로우 테이블 엔트리로 결합할 수 있다. 소위 다수의 플로우 테이블 엔트리를 결합하는 것은 주로 다수의 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드들에 채워진 데이터를 결합하는 것을 지칭한다. 예를 들어, N3개의 플로우 테이블 엔트리는 모두 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드 및 다른 프로토콜 타입의 필드를 포함한다고 가정된다. 가상 계층 디바이스는 N3개의 플로우 테이블 엔트리의 포트 번호 필드들에 채워진 데이터를 결합하고, N3개의 플로우 테이블 엔트리의 소스 IP 어드레스 필드들에 채워진 데이터를 결합하고, N3개의 플로우 테이블 엔트리의 목적지 MAC 어드레스 필드들에 채워진 데이터를 결합하고, N3개의 플로우 테이블 엔트리의 목적지 IP 어드레스 필드들에 채워진 데이터를 결합하고, N3개의 플로우 테이블 엔트리의 가상 로컬 영역 네트워크 식별자 필드들에 채워진 데이터를 결합하고, 그리고/또는 N3개의 플로우 테이블 엔트리의 소스 MAC 어드레스 필드들에 채워진 데이터를 결합할 수 있고, 다른 프로토콜 타입의 필드들에 채워진 데이터를 결합하는 방식은 그에 따라 추론될 수 있다.
본 발명의 일부 구현 방식들에서, 가상 계층 디바이스는 N3개의 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드들에 채워진 데이터를 검출할 수 있다. N3개의 플로우 테이블 엔트리에서의 제1 프로토콜 타입의 필드들에 채워진 데이터가 동일한 경우, N3개의 플로우 테이블 엔트리 중 임의의 플로우 테이블 엔트리에서의 제1 프로토콜 타입의 필드에 채워진 데이터는 제1 플로우 테이블 엔트리에서의 제1 프로토콜 타입의 필드에 채워진다. N3개의 플로우 테이블 엔트리에서의 제1 프로토콜 타입의 필드들에 채워진 데이터가 완전히 동일하지 않은 경우, N3개의 플로우 테이블 엔트리에서의 제1 프로토콜 타입의 필드들에 채워진 데이터는 제1 플로우 테이블 엔트리에서의 제1 프로토콜 타입의 필드에 채워질 수 있고, 여기서 제1 프로토콜 타입은 플로우 테이블 엔트리에서의 임의의 프로토콜 타입이다. 이러한 예에서 플로우 테이블 엔트리들을 결합하는 메커니즘에 기초하여, 제1 플로우 테이블 엔트리에서, N3개의 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 것이며 동일한 채워진 데이터를 갖는 필드들에 채워진 데이터에 대해, 이 데이터의 단 하나의 조각만이 제1 플로우 테이블 엔트리에서의 대응하는 동일한 프로토콜 타입의 필드에 채워진다. N3개의 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 것이며 완전히 동일하지 않은 채워진 데이터를 갖는 필드들에 채워진 데이터(전체 채워진 데이터의 N3개의 조각)에 대해, 이 데이터 전부가 제1 플로우 테이블 엔트리에서의 대응하는 동일한 프로토콜 타입의 필드에 채워진다. 그러므로, 채워진 데이터의 N3개의 조각은 (채워진 데이터의 N3개의 조각에 대해 중복 제거가 수행되지 않기 때문에) 전체 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드에 채워진다. 분명하게도, 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드의 채워진 데이터의 N3개의 조각의 배열 위치들은 디폴트로 합의될 수 있거나, 또는 오픈플로우 스위치가 제1 플로우 테이블 엔트리를 분할하는 것을 편리하게 하도록 표시 및 제시될 수 있다.
본 발명의 다른 구현 방식들에서, 가상 계층 디바이스는 N3개의 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드들에 채워진 데이터를 검출할 수 있다. N3개의 플로우 테이블 엔트리에서의 임의의 동일한 프로토콜 타입의 필드들에 채워진 데이터가 동일한 경우, 제1 플로우 테이블 엔트리에서의 임의의 프로토콜 타입의 필드에 채워진 데이터는 N3개의 플로우 테이블 엔트리 중 임의의 플로우 테이블 엔트리에서의 임의의 프로토콜 타입의 필드에 채워진 데이터와 동일하다. 제1 프로토콜 타입의 필드 외의 임의의 동일한 프로토콜 타입의 필드들에 채워진 데이터가 동일한 경우, 제1 플로우 테이블 엔트리에서의 제1 프로토콜 타입의 필드 외의 임의의 동일한 프로토콜 타입의 필드에 채워진 데이터는 N3개의 플로우 테이블 엔트리 중 임의의 플로우 테이블 엔트리에서의 제1 프로토콜 타입 외의 임의의 프로토콜 타입의 필드에 채워진 데이터와 동일하다. 제1 플로우 테이블 엔트리에서의 제1 프로토콜 타입의 필드에 채워진 데이터는, N3개의 플로우 테이블 엔트리에서의 제1 프로토콜 타입의 필드들에 채워진 데이터에 대해 중복 제거 처리가 수행된 이후에 획득되는 채워진 데이터의 적어도 2개의 조각이다. 제1 프로토콜 타입의 필드는 플로우 테이블 엔트리에서의 임의의 프로토콜 타입의 필드이다. 구체적으로, N3개의 플로우 테이블 엔트리에서의 제1 프로토콜 타입의 필드들에 채워진 데이터가 완전히 동일하지 않고, N3개의 플로우 테이블 엔트리에서의 제2 프로토콜 타입의 필드들에 채워진 데이터도 또한 완전히 동일하지 않은 경우, 가상 계층 디바이스는 N3개의 플로우 테이블 엔트리를 제1 플로우 테이블 엔트리로 결합하는 전술한 동작을 또한 수행하지 않을 수 있는데, 여기서 제1 프로토콜 타입의 필드 및 제2 프로토콜 타입의 필드는 N3개의 플로우 테이블 엔트리에서의 임의의 2개의 프로토콜 타입의 필드들일 수 있다.
이 실시예에서, SDN 제어기에 의해 오픈플로우 스위치로 전달된 오픈플로우 프로토콜 메시지에서 반송되는 플로우 테이블 엔트리에 대해, 플로우 테이블 엔트리에서의 필드 세트는 이 필드 세트의 실제 값을 반송하는 대신에 이 필드 세트의 실제 값의 인덱스를 반송한다는 것을 알 수 있다. 기술적 구현에서, 필드의 실제 값의 인덱스의 데이터 볼륨은 일반적으로 이 필드의 실제 값의 데이터 볼륨보다 더 작거나 심지어는 훨씬 더 작다. 그러므로, 이러한 메커니즘은 SDN 제어기와 오픈플로우 스위치 사이의 제어 채널의 오버헤드를 감소시키는 것을 돕고, 그에 의해 제어 채널의 정체 위험을 감소시키고, 또한 스위칭 디바이스의 네트워크 리소스들의 소모를 감소시키는 것을 돕고, 복잡한 네트워킹의 요건을 충족시키는 것을 돕는다. 또한, 가상 계층 디바이스는 SDN 제어기에 의해 전달되는 플로우 테이블 엔트리들을 추가로 결합하여 새로운 플로우 테이블 엔트리를 획득하고, 결합을 통해 획득된 새로운 플로우 테이블 엔트리를 반송하는 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하여, 전송되는 플로우 테이블 엔트리들의 전체 데이터 볼륨이 추가로 감소되고, 그에 의해 제어 채널의 정체 위험을 추가로 감소시키고, 스위칭 디바이스의 네트워크 리소스들의 소모를 추가로 감소시키고, 복잡한 네트워킹의 요건을 양호하게 충족시킨다.
본 발명의 실시예들에서의 전술한 해결책들을 양호하게 이해하고 구현하기 위해서, 일부 특정 예들을 이용함으로써 설명이 아래에 제공된다.
도 4를 참조하면, 도 4는 본 발명의 다른 실시예에 따른 플로우 테이블 동기화 방법의 개략적인 플로우차트이다. 도 4에 도시된 바와 같이, 본 발명의 다른 실시예에 따른 플로우 테이블 동기화 방법은 다음의 내용을 포함할 수 있다.
401: SDN 제어기가 플로우 테이블 동기화 요청(테이블 피처 요청(table feature request)) 메시지를 오픈플로우 스위치로 송신하여, 플로우 테이블 동기화를 수행하도록 요청하는 단계.
SDN 제어기는, 능동적으로 또는 일부 트리거 조건들(트리거 조건들은 예를 들어 시스템 재시작 또는 사용자의 명령어일 수 있음)에 의해 트리거될 때, 테이블 피처 요청 메시지를 오픈플로우 스위치로 송신하여, 플로우 테이블 동기화를 수행하도록 요청할 수 있다.
402: 오픈플로우 스위치가 플로우 테이블 동기화 응답(테이블 피처 응답) 메시지를 SDN 제어기로 송신하는 단계.
테이블 피처 응답 메시지는 오픈플로우 스위치에 현재 저장되어 있는 모든 플로우 테이블 엔트리들을 반송할 수 있다. 대안적으로, 테이블 피처 응답 메시지는, 오픈플로우 스위치에 저장되어 있으며 변경된 플로우 테이블 엔트리를 반송할 수 있고, 여기서 변경된 플로우 테이블 엔트리는 이전에 SDN 제어기에 대해 동기화된 플로우 테이블 엔트리와 비교하여 볼 때 변경된 플로우 테이블 엔트리를 지칭한다.
403: SDN 제어기가 테이블 피처 응답 메시지를 수신하고, 테이블 피처 응답 메시지에서 반송된 플로우 테이블 엔트리에 따라, SDN 제어기에 의해 유지되는 플로우 테이블 데이터베이스를 업데이트하는 단계.
본 발명의 일부 실시예들에서, 오픈플로우 스위치에 저장된 플로우 테이블 엔트리가 일부 원인들로 인해 변경된 경우, 오픈플로우 스위치는, 테이블 피처 응답 메시지를 이용함으로써, 오픈플로우 스위치에 저장되어 있으며 변경된 플로우 테이블 엔트리를 SDN 제어기로 능동적으로 전송할 수 있고, 그에 의해 SDN 제어기는, 오픈플로우 스위치로부터 수신된 플로우 테이블 엔트리에 따라, SDN 제어기에 의해 유지되는 플로우 테이블 데이터베이스를 업데이트한다.
본 발명의 일부 구현 방식들에서, 동일한 플로우 테이블 엔트리에 대해, 플로우 테이블 엔트리를 식별하는데 이용되며 오픈플로우 스위치 및 SDN 제어기에 있는 플로우 테이블 엔트리 식별자들은 동일할 수도 있고 합의된 매핑 관계를 가질 수도 있고, 오픈플로우 스위치 및 SDN 제어기 양쪽 모두는 특정된 매핑 관계를 이용함으로써 피어 엔드 디바이스에서의 동일한 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자를 추론할 수 있다.
본 발명의 일부 실시예들에서, SDN 제어기가 오픈플로우 스위치로 전달되는 플로우 테이블 엔트리를 로컬로 백업할 때마다, 단계(401) 내지 단계(403)에서 설명되는 SDN 제어기와 오픈플로우 스위치 사이에 플로우 테이블 엔트리를 동기화하는 동작은 또한 실행될 필요가 없을 수도 있다.
이 실시예에서 제안된 SDN 제어기와 오픈플로우 스위치 사이에 플로우 테이블을 동기화하는 방식에 기초하여, 오픈플로우 스위치와 SDN 제어기 사이의 플로우 테이블의 동기화가 구현된다는 것을 알 수 있다.
도 5를 참조하면, 도 5는 본 발명의 다른 실시예에 따른 다른 플로우 테이블 관리 방법의 개략적인 플로우차트이다. 도 5에 도시된 바와 같이, 본 발명의 다른 실시예에 따른 다른 플로우 테이블 관리 방법은 다음의 내용을 포함할 수 있다.
501: 오픈플로우 스위치가 패킷 S1을 수신하는 단계.
패킷 S1은 다른 프로토콜을 이용함으로써 캡슐화되는 IP 패킷 또는 TCP 패킷이나 UDP 패킷일 수 있다. 패킷 S1은 외부 IP, 내부 IP, 및 터널 종단점을 기술하는데 이용되는 식별자 TEID를 가질 수 있다. 분명하게도, 패킷 S1은 다른 계층 구조를 가질 수 있다.
502: 오픈플로우 스위치가 플로우 테이블을 검색하여, 패킷 S1에 매칭하는 플로우 테이블 엔트리가 존재하는지를 결정하는 단계.
그러한 경우, 단계(503)를 실행한다.
그렇지 않은 경우, 단계(504)를 실행한다.
503: 패킷 S1에 매칭하는 발견된 플로우 테이블 엔트리에서의 명령어 필드에서 반송되는 라우팅 명령어 세트에 기초하여, 오픈플로우 스위치가 패킷 S1을 처리하는 단계.
504: 오픈플로우 스위치가 패킷 S1을 반송하는 packet_in 메시지를 SDN 제어기로 송신하여, 대응하는 플로우 테이블 엔트리를 전달하도록 SDN 제어기에 요청하는 단계.
packet_in 메시지는 오픈플로우 프로토콜 메시지이다.
505: SDN 제어기가 오픈플로우 스위치에 의해 송신된 packet_in 메시지를 수신하고, 미리 설정된 처리 정책에 따라, 패킷 S1에 대응하는 라우팅 명령어 세트를 결정할 수 있는 단계.
미리 설정된 처리 정책에 따라 SDN 제어기에 의해 결정되는 패킷 S1의 라우팅 명령어 세트는 패킷 S1을 처리하기 위한 다수의 명령어를 포함할 수 있다. 예를 들어, 라우팅 명령어 세트는 MAC에 기초하여 패킷 S1을 포워딩하도록 오픈플로우 스위치에 명령하는 명령어, IP에 기초하여 패킷 S1을 라우팅하도록 오픈플로우 스위치에 명령하는 명령어, 패킷 S1에 대해 GTP 터널 캡슐화를 수행하도록 오픈플로우 스위치에 명령하는 명령어, 패킷 S1에 대해 GTP 터널 캡슐화해제(decapsulation)를 수행하도록 오픈플로우 스위치에 명령하는 명령어 등을 포함한다.
506: SDN 제어기가 제1 플로우 테이블 엔트리를 생성하고, 제1 플로우 테이블 엔트리를 반송하며 packet_in 메시지에 응답하는데 이용되는 flow_mod 메시지를 오픈플로우 스위치로 송신하는 단계.
flow_mod 메시지는 오픈플로우 프로토콜 메시지이다.
제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수이다. 제1 플로우 테이블 엔트리의 명령어 필드는 제1 필드 세트에서의 하나의 필드일 수도 있고, 분명하게도, 명령어 필드는 또한 제1 필드 세트에 속하지 않을 수도 있다. 예를 들어, 제1 플로우 테이블 엔트리의 명령어(Instructions) 필드는 라우팅 명령어 세트 또는 라우팅 명령어 세트의 인덱스를 반송한다(여기서, 인덱스는 예를 들어 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있음).
본 발명의 실시예들에서의 N은 예를 들어 1, 2, 5, 8, 10 또는 다른 값과 동일할 수 있다.
제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 임의의 N개의 필드일 수 있다. 예를 들어, N개의 필드는 다음의 필드들: 프로토콜 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 소스 MAC 어드레스 필드, 포트 번호 필드, 가상 로컬 영역 네트워크 식별자 필드 등 중 하나 이상을 포함할 수 있다.
본 발명의 일부 구현 방식들에서, 인덱스는 오픈플로우 스위치에 이미 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있다. 즉, flow_mod 메시지에서 반송되는 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 임의의 필드에서 반송되는 인덱스는 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있다. N이 1보다 큰 경우, 제1 필드 세트에서의 필드들에서 반송되는 인덱스들은 완전히 동일하거나 부분적으로 동일하거나 또는 완전히 상이할 수 있다는 점이 이해될 수 있다.
507: flow_mod 메시지를 수신한 이후에, 오픈플로우 스위치가 제1 필드 세트에서의 인덱스에 기초하여 제1 필드 세트의 실제 값을 획득하고, 획득된 제1 필드 세트의 실제 값을 제1 플로우 테이블 엔트리에서의 제1 필드 세트에 채우고; 실제 값이 제1 필드 세트에 채워지는 제1 플로우 테이블 엔트리를 오픈플로우 스위치가 저장하는 단계.
오픈플로우 스위치는, flow_mod 메시지에서 반송되는 제1 플로우 테이블 엔트리에 있으며 실제 값들로 채워지지 않은 필드들에 대해 실제 값들을 채우고, 오픈플로우 스위치는 실제 값들로 채워지지 않은 모든 필드들에 실제 값들이 채워진 제1 플로우 테이블을 저장한다.
제1 필드 세트에서 반송되는 인덱스가 플로우 테이블 엔트리 식별자라고 가정하면, 오픈플로우 스위치는, 플로우 테이블 엔트리 식별자에 기초하여, 플로우 테이블 엔트리 식별자에 의해 표현된 플로우 테이블 엔트리에 있으며 제1 필드 세트와 동일한 프로토콜 타입을 갖는 제3 필드 세트에 채워진 실제 값을 획득할 수 있고, 제3 필드 세트 및 제1 필드 세트에 있으며 동일한 프로토콜 타입을 갖는 필드들은 동일한 실제 값을 갖는다.
508: 오픈플로우 스위치가, 제1 플로우 테이블 엔트리의 명령어 필드에서 반송되며 패킷 S1을 처리하는데 이용되는 라우팅 명령어 세트에 기초하여 제1 패킷 S1을 처리하는 단계.
이 실시예에서, SDN 제어기에 의해 오픈플로우 스위치로 송신된 flow_mod 메시지에서 반송되는 제1 플로우 테이블 엔트리에 대해, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값을 반송하는 대신에 제1 필드 세트에서의 실제 값의 인덱스를 반송한다는 것을 알 수 있다. 기술적 구현에서, 필드의 실제 값의 인덱스의 데이터 볼륨은 일반적으로 이 필드의 실제 값의 데이터 볼륨보다 더 작거나 심지어는 훨씬 더 작다. 그러므로, 이 실시예에서 제공되는 메커니즘은 SDN 제어기와 오픈플로우 스위치 사이의 제어 채널의 오버헤드를 감소시키는 것을 돕고, 그에 의해 제어 채널의 정체 위험을 감소시키고, 오픈플로우 스위치의 계산 리소스들의 소모를 감소시키는 것을 돕는다.
도 6을 참조하면, 도 6은 본 발명의 다른 실시예에 따른 다른 플로우 테이블 관리 방법의 개략적인 플로우차트이다. 도 6에 도시된 바와 같이, 본 발명의 다른 실시예에 따른 다른 플로우 테이블 관리 방법은 다음의 내용을 포함할 수 있다.
601: 오픈플로우 스위치가 K1개의 패킷을 수신하는 단계.
K1은 1보다 큰 양의 정수이다. K1개의 패킷은 다른 프로토콜을 이용함으로써 캡슐화되는 IP 패킷들 또는 TCP 패킷들이나 UDP 패킷들일 수 있고, K1개의 패킷의 일부 또는 전부는 외부 IP들, 내부 IP들, 및 터널 종단점을 기술하는데 이용되는 식별자 TEID를 가질 수 있다. 분명하게도, K1개의 패킷의 일부 또는 전부는 다른 계층 구조를 가질 수 있다.
K1개의 패킷은 특정된 시간 내에 오픈플로우 스위치에 의해 수신될 수 있고, 특정된 시간은 1초, 2초, 5초 또는 다른 시간일 수 있다.
602: 오픈플로우 스위치가 플로우 테이블을 검색하여, K1개의 패킷 각각에 매칭하는 플로우 테이블 엔트리가 존재하는지를 결정하는 단계.
이 실시예에서, 오픈플로우 스위치는 K1개의 패킷 중의 K2개의 패킷 각각에 매칭하는 플로우 테이블 엔트리가 플로우 테이블에 존재한다고 발견하지만, 오픈플로우 스위치는 플로우 테이블에서 K1개의 패킷 중의 K3개의 패킷 각각에 매칭하는 플로우 테이블 엔트리는 발견하지 못한다고 가정된다.
K1=K2+K3이고, 여기서 K2는 양의 정수이고, K3은 1보다 큰 양의 정수라고 가정된다.
603: K2개의 패킷 각각에 매칭하는 발견된 플로우 테이블 엔트리에서의 명령어 필드에서 반송되는 라우팅 명령어 세트에 기초하여, 오픈플로우 스위치가 각각의 패킷을 처리하는 단계.
604: 오픈플로우 스위치가 K3개의 패킷을 반송하는 packet_in 메시지를 SDN 제어기로 송신하여, 대응하는 플로우 테이블 엔트리를 전달하도록 SDN 제어기에 요청하는 단계.
packet_in 메시지는 오픈플로우 프로토콜 메시지이다.
605: SDN 제어기가 오픈플로우 스위치에 의해 송신된 packet_in 메시지를 수신하고, 미리 설정된 처리 정책에 따라, K3개의 패킷 각각에 대응하는 라우팅 명령어 세트를 결정할 수 있는 단계.
미리 설정된 처리 정책에 따라 SDN 제어기에 의해 결정되는 K3개의 패킷 각각의 라우팅 명령어 세트는 이 패킷을 처리하기 위한 다수의 명령어를 포함할 수 있다. SDN 제어기에 의해 결정되며 K3개의 패킷의 일부 또는 전부에 대응하는 라우팅 명령어 세트들은 동일할 수도 있다. 분명하게도, SDN 제어기에 의해 결정되며 K3개의 패킷의 전부에 대응하는 라우팅 명령어 세트들은 상이할 수도 있다.
606: SDN 제어기가 K4개의 플로우 테이블 엔트리를 생성하고, K4개의 플로우 테이블 엔트리를 반송하며 packet_in 메시지에 응답하는데 이용되는 flow_mod 메시지를 오픈플로우 스위치로 송신하는 단계.
flow_mod 메시지는 오픈플로우 프로토콜 메시지이다.
K4개의 플로우 테이블 엔트리 중 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 제1 필드 세트는 N개의 필드를 포함할 수 있고, N은 양의 정수이다. 제1 플로우 테이블 엔트리의 명령어 필드는 제1 필드 세트에서의 하나의 필드일 수도 있고, 분명하게도, 명령어 필드는 또한 제1 필드 세트에 속하지 않을 수도 있다. 예를 들어, 제1 플로우 테이블 엔트리의 명령어(Instructions) 필드는 라우팅 명령어 세트 또는 라우팅 명령어 세트의 인덱스를 반송한다(인덱스는 예를 들어 오픈플로우 스위치에 이미 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있음).
본 발명의 이 실시예에서의 N은 예를 들어 1, 2, 5, 8, 10 또는 다른 값과 동일할 수 있다.
제1 플로우 테이블 엔트리는 K4개의 플로우 테이블 엔트리 중 임의의 플로우 테이블 엔트리일 수 있다. 제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 임의의 N개의 필드일 수 있다. 예를 들어, N개의 필드는 다음의 필드들: 프로토콜 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 소스 MAC 어드레스 필드, 포트 번호 필드, 가상 로컬 영역 네트워크 식별자 필드 등 중 하나 이상을 포함할 수 있다.
본 발명의 일부 구현 방식들에서, 인덱스는 오픈플로우 스위치에 이미 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있다. 즉, flow_mod 메시지에서 반송되는 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 임의의 필드에서 반송되는 인덱스는 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있다. N이 1보다 큰 경우, 제1 필드 세트에서의 필드들에서 반송되는 인덱스들은 완전히 동일하거나 부분적으로 동일하거나 또는 완전히 상이할 수 있다는 점이 이해될 수 있다.
K4개의 플로우 테이블 엔트리 중 제1 플로우 테이블 엔트리를 포함하는 적어도 하나의 플로우 테이블 엔트리의 제1 필드 세트는 flow_mod 메시지에서 반송되는 K4개의 플로우 테이블 엔트리의 데이터 볼륨을 감소시키기 위해 제1 필드 세트에서의 실제 값의 인덱스를 반송할 수 있다는 점이 이해될 수 있다.
607: 오픈플로우 스위치가 flow_mod 메시지를 수신한 이후에, flow_mod 메시지에서 반송된 K4개의 플로우 테이블 엔트리에 있으며 실제 값들로 채워지지 않은 필드들에 실제 값들을 오픈플로우 스위치가 채울 수 있고, 모든 필드들에 실제 값들이 채워지는 K4개의 플로우 테이블 엔트리를 오픈플로우 스위치가 저장하는 단계.
제1 필드 세트에서 반송되는 인덱스가 플로우 테이블 엔트리 식별자라고 가정하면, 오픈플로우 스위치는, 플로우 테이블 엔트리 식별자에 기초하여, 플로우 테이블 엔트리 식별자에 의해 표현된 플로우 테이블 엔트리에 있으며 제1 필드 세트와 동일한 프로토콜 타입을 갖는 제3 필드 세트에 채워진 실제 값을 획득할 수 있고, 제3 필드 세트 및 제1 필드 세트에 있으며 동일한 프로토콜 타입을 갖는 필드들은 동일한 실제 값을 갖는다.
608: 플로우 테이블 엔트리에서의 명령어 필드에서 반송되며 K3개의 패킷 각각에 매칭하는 라우팅 명령어 세트에 기초하여, 오픈플로우 스위치가 각각의 패킷을 처리하는 단계.
이 실시예에서, SDN 제어기에 의해 오픈플로우 스위치로 송신된 flow_mod 메시지에서 반송되는 K4개의 플로우 테이블 엔트리에 대해, K4개의 플로우 테이블 엔트리 중 적어도 하나의 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값을 반송하는 대신에 제1 필드 세트에서의 실제 값의 인덱스를 반송한다는 것을 알 수 있다. 기술적 구현에서, 필드의 실제 값의 인덱스의 데이터 볼륨은 일반적으로 이 필드의 실제 값의 데이터 볼륨보다 더 작거나 심지어는 훨씬 더 작다. 그러므로, 이 실시예에서 제공되는 메커니즘은 SDN 제어기와 오픈플로우 스위치 사이의 제어 채널의 오버헤드를 감소시키는 것을 돕고, 그에 의해 제어 채널의 정체 위험을 감소시키고, 또한 오픈플로우 스위치의 계산 리소스들의 소모를 감소시키는 것을 돕는다.
도 7을 참조하면, 도 7은 본 발명의 다른 실시예에 따른 다른 플로우 테이블 관리 방법의 개략적인 플로우차트이다. 도 7에 도시된 바와 같이, 본 발명의 다른 실시예에 따른 다른 플로우 테이블 관리 방법은 다음의 내용을 포함할 수 있다.
701: 오픈플로우 스위치가 패킷 S1 및 패킷 S2를 수신하는 단계.
패킷 S1 및 패킷 S2는 다른 프로토콜을 이용함으로써 캡슐화되는 IP 패킷들 또는 TCP 패킷들이나 UDP 패킷들일 수 있다. 패킷 S1 및 패킷 S2는 외부 IP들, 내부 IP들, 및 터널 종단점을 기술하는데 이용되는 식별자 TEID를 가질 수 있다. 분명하게도, 패킷 S1 및 패킷 S2는 다른 계층 구조를 가질 수 있다.
K1개의 패킷은 특정된 시간 내에 오픈플로우 스위치에 의해 수신될 수 있고, 특정된 시간은 1초, 2초, 5초 또는 다른 시간일 수 있다.
702: 오픈플로우 스위치가 플로우 테이블을 검색하여, 패킷 S1 및 패킷 S2에 매칭하는 플로우 테이블 엔트리들이 존재하는지를 결정할 수 있는 단계.
이 실시예에서, 오픈플로우 스위치는 플로우 테이블에서 패킷 S1에 매칭하는 플로우 테이블 엔트리를 발견하지 못하고, 오픈플로우 스위치는 플로우 테이블에서 패킷 S2에 매칭하는 플로우 테이블 엔트리도 발견하지 못한다고 가정된다.
703: 오픈플로우 스위치가 패킷 S1을 반송하는 packet_in 메시지 m1을 제1 SDN 제어기로 송신하여, 대응하는 플로우 테이블 엔트리를 전달하도록 이 SDN 제어기에 요청하고, 오픈플로우 스위치가 패킷 S2를 반송하는 packet_in 메시지 m2를 제2 SDN 제어기로 송신하여, 대응하는 플로우 테이블 엔트리를 전달하도록 이 SDN 제어기에 요청하는 단계.
packet_in 메시지 m1 및 packet_in 메시지 m2는 오픈플로우 프로토콜 메시지들이다.
704: 가상 계층 디바이스가 packet_in 메시지 m1 및 packet_in 메시지 m2를 수신하고, packet_in 메시지 m1을 제1 SDN 제어기로 포워딩하고; 가상 계층 디바이스가 packet_in 메시지 m2를 제2 SDN 제어기로 포워딩하는 단계.
705: 제1 SDN 제어기가 packet_in 메시지 m1을 수신하고, 미리 설정된 처리 정책에 따라, 패킷 S1에 대응하는 라우팅 명령어 세트를 결정하는 단계.
미리 설정된 처리 정책에 따라 제1 SDN 제어기에 의해 결정되는 패킷 S1의 라우팅 명령어 세트는 패킷 S1을 처리하기 위한 다수의 명령어를 포함할 수 있다. 예를 들어, 라우팅 명령어 세트는 MAC에 기초하여 패킷 S1을 포워딩하도록 오픈플로우 스위치에 명령하는 명령어, IP에 기초하여 패킷 S1을 라우팅하도록 오픈플로우 스위치에 명령하는 명령어, 패킷 S1에 대해 GTP 터널 캡슐화를 수행하도록 오픈플로우 스위치에 명령하는 명령어, 패킷 S1에 대해 GTP 터널 캡슐화해제를 수행하도록 오픈플로우 스위치에 명령하는 명령어 등을 포함한다.
706: 제1 SDN 제어기가 플로우 테이블 엔트리 x1을 생성하고, 플로우 테이블 엔트리 x1을 반송하며 packet_in 메시지 m1에 응답하는데 이용되는 flow_mod 메시지 mf1을 오픈플로우 스위치로 송신하는 단계.
flow_mod 메시지 mf1은 오픈플로우 프로토콜 메시지이다.
플로우 테이블 엔트리 x1의 필드 세트 c1은 필드 세트 c1의 실제 값의 인덱스를 반송하고, 필드 세트 c1은 Nn1개의 필드를 포함하고, Nn1은 양의 정수이다. 플로우 테이블 엔트리 x1의 명령어 필드는 필드 세트 c1에서의 하나의 필드일 수도 있다. 분명하게도, 명령어 필드는 또한 필드 세트 c1에 속하지 않을 수도 있다. 예를 들어, 플로우 테이블 엔트리 x1의 명령어(Instructions) 필드는 라우팅 명령어 세트 또는 라우팅 명령어 세트의 인덱스를 반송한다(여기서, 인덱스는 예를 들어 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있음).
본 발명의 이 실시예에서의 Nn1은 예를 들어 1, 2, 5, 8, 10 또는 다른 값과 동일할 수 있다.
필드 세트 c1에 포함된 Nn1개의 필드는 플로우 테이블 엔트리 x1에서의 임의의 Nn1개의 필드일 수 있다. 예를 들어, Nn1개의 필드는 다음의 필드들: 프로토콜 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 소스 MAC 어드레스 필드, 포트 번호 필드, 가상 로컬 영역 네트워크 식별자 필드 등 중 하나 이상을 포함할 수 있다.
본 발명의 일부 구현 방식들에서, 인덱스는 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있다. 즉, flow_mod 메시지에서 반송되는 플로우 테이블 엔트리 x1에서의 필드 세트 c1의 임의의 필드에서 반송되는 인덱스는 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있다. Nn1이 1보다 큰 경우, 필드 세트 c1에서의 필드들에서 반송되는 인덱스는 완전히 동일하거나 부분적으로 동일하거나 또는 완전히 상이할 수 있다는 점이 이해될 수 있다.
707: 제2 SDN 제어기가 packet_in 메시지 m2를 수신하고, 미리 설정된 처리 정책에 따라, 패킷 S2의 라우팅 명령어 세트를 결정하는 단계.
미리 설정된 처리 정책에 따라 제2 SDN 제어기에 의해 결정되는 패킷 S2의 라우팅 명령어 세트는 패킷 S2를 처리하기 위한 다수의 명령어를 포함할 수 있다. 예를 들어, 라우팅 명령어 세트는 MAC에 기초하여 패킷 S2를 포워딩하도록 오픈플로우 스위치에 명령하는 명령어, IP에 기초하여 패킷 S2를 라우팅하도록 오픈플로우 스위치에 명령하는 명령어, 패킷 S2에 대해 GTP 터널 캡슐화를 수행하도록 오픈플로우 스위치에 명령하는 명령어, 패킷 S2에 대해 GTP 터널 캡슐화해제를 수행하도록 오픈플로우 스위치에 명령하는 명령어 등을 포함한다.
708: 제2 SDN 제어기가 플로우 테이블 엔트리 x2를 생성하고, 플로우 테이블 엔트리 x2를 반송하며 packet_in 메시지 m2에 응답하는데 이용되는 flow_mod 메시지 mf2를 오픈플로우 스위치로 송신하는 단계.
flow_mod 메시지 mf2는 오픈플로우 프로토콜 메시지이다.
플로우 테이블 엔트리 x2에서의 필드 세트 c2는 필드 세트 c2의 실제 값의 인덱스를 반송하고, 필드 세트 c2는 Nn2개의 필드를 포함하고, Nn2는 양의 정수이다. 플로우 테이블 엔트리 x2의 명령어 필드는 필드 세트 c2에서의 하나의 필드일 수도 있다. 분명하게도, 명령어 필드는 필드 세트 c2에 속하지 않을 수도 있다. 예를 들어, 플로우 테이블 엔트리 x2의 명령어(Instructions) 필드는 라우팅 명령어 세트 또는 라우팅 명령어 세트의 인덱스를 반송한다(인덱스는 예를 들어 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있음).
본 발명의 이 실시예에서의 Nn2는 예를 들어 1, 2, 5, 8, 10 또는 다른 값과 동일할 수 있다.
필드 세트 c2에 포함된 Nn2개의 필드는 플로우 테이블 엔트리 x2에서의 임의의 Nn2개의 필드일 수 있다. 예를 들어, Nn2개의 필드는 다음의 필드들: 프로토콜 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 소스 MAC 어드레스 필드, 포트 번호 필드, 가상 로컬 영역 네트워크 식별자 필드 등 중 하나 이상을 포함할 수 있다.
본 발명의 일부 구현 방식들에서, 인덱스는 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있다. 즉, flow_mod 메시지에서 반송되는 플로우 테이블 엔트리 x2에서의 필드 세트 c2의 임의의 필드에서 반송되는 인덱스는 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있다. Nn2가 1보다 큰 경우, 필드 세트 c2에서의 필드들에서 반송되는 인덱스들은 완전히 동일하거나 부분적으로 동일하거나 또는 완전히 상이할 수 있다는 점이 이해될 수 있다.
709: 가상 계층 디바이스가 flow_mod 메시지 mf1 및 flow_mod 메시지 mf2를 수신하고, flow_mod 메시지 mf1에서 반송되는 플로우 테이블 엔트리 x1과 flow_mod 메시지 mf2에서 반송되는 플로우 테이블 엔트리 x2를 결합하여, 플로우 테이블 엔트리 x3을 획득하는 단계.
본 발명의 일부 구현 방식들에서, 플로우 테이블 엔트리 x1과 플로우 테이블 엔트리 x2를 플로우 테이블 엔트리 x3으로 결합하는 다양한 타입의 방식들이 존재할 수 있다. 예를 들어, 가상 계층 디바이스는 플로우 테이블 엔트리 x1과 플로우 테이블 엔트리 x2에서의 각각의 동일한 프로토콜 타입의 필드들에 채워진 데이터를 검출할 수 있다. 플로우 테이블 엔트리 x1과 플로우 테이블 엔트리 x2에서의 동일한 프로토콜 타입의 필드들에 채워진 데이터가 동일한 경우, 이러한 동일한 채워진 데이터의 하나의 조각이 플로우 테이블 엔트리 x3에서의 동일한 프로토콜 타입의 필드에 채워진다. 플로우 테이블 엔트리 x1과 플로우 테이블 엔트리 x2에서의 동일한 프로토콜 타입의 필드들에 채워진 데이터가 상이한 경우, 이러한 상이한 채워진 데이터는 (예를 들어, 도 7c에서의 예에 도시된 바와 같이) 플로우 테이블 엔트리 x3에서의 대응하는 동일한 프로토콜 타입의 필드에 채워진다.
예를 들어, 도 3b 및 도 3c를 참조하면, 도 3b는 2개의 플로우 테이블 엔트리가 하나의 플로우 테이블 엔트리로 결합되는 시나리오의 예를 도시한다. 도 3c는 3개의 플로우 테이블 엔트리가 하나의 플로우 테이블 엔트리로 결합되는 시나리오의 예를 도시한다. 더 많은 플로우 테이블 엔트리가 결합되는 시나리오가 그에 따라 추론될 수 있다.
710: 가상 계층 디바이스가 플로우 테이블 엔트리 x3을 반송하는 flow_mod 메시지 mf3을 오픈플로우 스위치로 송신하는 단계.
711: 전술한 flow_mod 메시지 mf3을 수신한 이후에, 오픈플로우 스위치가 플로우 테이블 엔트리 x2를 다수의 플로우 테이블 엔트리로 분할하고(분할을 통해 획득된 각각의 플로우 테이블 엔트리의 각각의 필드는 단지 실제 값 또는 실제 값의 인덱스를 가짐), 오픈플로우 스위치가 분할을 통해 획득된 다수의 플로우 테이블 엔트리에서 실제 값들로 채워지지 않은 필드들에 실제 값들(실제 값들은 대응하는 인덱스들에 따라 획득될 수 있음)을 채우고, 오픈플로우 스위치가 모든 필드들에 실제 값들이 채워진 이후에 획득되는 다수의 플로우 테이블 엔트리를 저장하는 단계.
712: 오픈플로우 스위치가 패킷 S1에 매칭하는 플로우 테이블 엔트리에서의 명령어 필드에서 반송되는 라우팅 명령어 세트에 기초하여 패킷 S1을 처리하고, 유사하게 오픈플로우 스위치가 패킷 S2에 매칭하는 플로우 테이블 엔트리에서의 명령어 필드에서 반송되는 라우팅 명령어 세트에 기초하여 패킷 S2를 처리하는 단계.
이 실시예에서, SDN 제어기에 의해 오픈플로우 스위치로 송신된 flow_mod 메시지에서 반송되는 K4개의 플로우 테이블 엔트리에 대해, K4개의 플로우 테이블 엔트리 중 적어도 하나의 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값을 반송하는 대신에 제1 필드 세트에서의 실제 값의 인덱스를 반송한다는 것을 알 수 있다. 기술적 구현에서, 필드의 실제 값의 인덱스의 데이터 볼륨은 일반적으로 이 필드의 실제 값의 데이터 볼륨보다 더 작거나 심지어는 훨씬 더 작다. 그러므로, 이 실시예에서 제공되는 메커니즘은 SDN 제어기와 오픈플로우 스위치 사이의 제어 채널의 오버헤드를 감소시키는 것을 돕고, 그에 의해 제어 채널의 정체 위험을 감소시키고, 또한 오픈플로우 스위치의 계산 리소스들의 소모를 감소시키는 것을 돕는다.
도 8a를 참조하면, 본 발명의 실시예는 생성 유닛(810)과 송신 유닛(820)을 포함할 수 있는 소프트웨어 정의 네트워크 제어기(800)를 추가로 제공한다.
생성 유닛(810)은 제1 플로우 테이블 엔트리를 생성하도록 구성되고, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수이다.
생성 유닛(810)은 미리 설정된 정책에 기초하여 제1 플로우 테이블 엔트리를 생성할 수 있고, 생성 유닛(810)은 사용자에 의해 명령될 때 또는 오픈플로우 스위치에 의해 트리거될 때 제1 플로우 테이블 엔트리를 생성할 수 있다. 분명하게도, 생성 유닛(810)은 다른 조건에 의해 트리거될 때 하나 이상의 플로우 테이블 엔트리를 생성할 수 있다.
송신 유닛(820)은 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하도록 구성되고, 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송한다.
제1 플로우 테이블 엔트리를 반송하는 오픈플로우 프로토콜 메시지는 예를 들어 flow_mod 메시지 또는 다른 오픈플로우 프로토콜 메시지일 수 있다.
본 발명의 일부 실시예들에서, 인덱스는 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자이다.
제1 플로우 테이블 엔트리는 표준 플로우 테이블 엔트리의 데이터 구조와 동일한 데이터 구조를 가질 수 있다는 점이 이해될 수 있다. 예를 들어, 제1 플로우 테이블 엔트리에 포함된 프로토콜 필드의 타입 및 제1 플로우 테이블 엔트리에서의 모든 타입의 프로토콜 필드들 사이의 위치 관계는 표준 플로우 테이블 엔트리의 것들과 동일할 수 있다. 그러나, 제1 플로우 테이블 엔트리에서의 프로토콜 필드들 중 일부 또는 전부에서 반송되는 정보의 타입은 표준 플로우 테이블 엔트리에서의 것과 상이하다. 구체적으로, 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 필드는 이 필드의 실제 값의 인덱스를 반송하는 한편, 표준 플로우 테이블 엔트리에서의 각각의 필드는 이 필드의 실제 값을 반송한다.
본 발명의 실시예들에서의 N은 예를 들어 1, 2, 5, 8, 10 또는 다른 값과 동일할 수 있다.
제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 임의의 N개의 필드일 수 있다. 제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 인접한 N개의 필드, 부분적으로 인접한 N개의 필드 또는 인접하지 않은 N개의 필드일 수 있는데, 즉 제1 필드 세트에서의 필드들이 제1 플로우 테이블 엔트리에서 임의로 분산될 수 있는 위치들일 수 있고, 이는 다양한 실제 애플리케이션 시나리오들의 유연한 요건들을 더 유연하게 충족시키는 것을 돕는다. N개의 필드는 예를 들어 다음의 필드들: 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드 등 중 적어도 하나를 포함할 수 있다. 제1 필드 세트에서의 필드의 실제 값은 이 필드가 반송해야 하는 표준 값을 나타낸다. 예를 들어, 포트 번호 필드의 실제 값은 포트 번호이고, 소스 IP 어드레스 필드의 실제 값은 소스 IP 어드레스이고, 목적지 IP 어드레스 필드의 실제 값은 목적지 IP 어드레스이고, 목적지 MAC 어드레스 필드의 실제 값은 목적지 MAC 어드레스이고, 가상 로컬 영역 네트워크 식별자 필드의 실제 값은 가상 로컬 영역 네트워크 식별자이고, 소스 MAC 어드레스 필드의 실제 값은 소스 MAC 어드레스이고, 다른 필드의 실제 값은 그에 따라 추론된다. 본 발명의 이 실시예에서, SDN 제어기(800)에 의해 전달되는 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 필드는 이 필드의 실제 값을 반송하지 않고, 대신에 이 필드의 실제 값의 인덱스를 반송하는데, 여기서 인덱스는 이 필드의 실제 값이 인덱싱될 수 있는 정보이다. 제1 필드 세트가 포트 번호 필드를 포함한다고 가정하면, 포트 번호 필드는 포트 번호를 반송하지 않고, 대신에 포트 번호가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 소스 IP 어드레스 필드를 포함하고, 소스 IP 어드레스 필드는 소스 IP 어드레스를 반송하지 않고, 대신에 소스 IP 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 목적지 IP 어드레스 필드를 포함하고, 목적지 IP 어드레스 필드는 목적지 IP 어드레스를 반송하지 않고, 대신에 목적지 IP 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 가상 로컬 영역 네트워크 식별자 필드를 포함하고, 가상 로컬 영역 네트워크 식별자 필드는 가상 로컬 영역 네트워크 식별자를 반송하지 않고, 대신에 가상 로컬 영역 네트워크 식별자가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 목적지 MAC 어드레스 필드를 포함하고, 목적지 MAC 어드레스 필드는 목적지 MAC 어드레스를 반송하지 않고, 대신에 목적지 MAC 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 소스 MAC 어드레스 필드를 포함하고, 소스 MAC 어드레스 필드는 소스 MAC 어드레스를 반송하지 않고, 대신에 소스 MAC 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 제1 필드 세트가 다른 프로토콜 필드를 더 포함하는 경우, 관련 경우가 그에 따라 추론된다.
실제 값의 인덱스는 다양한 타입들을 가질 수 있으며, 오픈플로우 스위치가 실제 값의 인덱스에 따라 실제 값을 획득할 수 있는 한, 요건이 충족될 수 있다는 점이 이해될 수 있다. 본 발명의 일부 구현 방식들에서, 실제 값의 인덱스는 예를 들어 오픈플로우 스위치에 이미 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자를 포함할 수 있는데, 즉 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 임의의 필드에서 반송되는 인덱스는 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있다. N이 1보다 큰 경우, 제1 필드 세트에서의 필드들에서 반송되는 인덱스들은 완전히 동일하거나 부분적으로 동일하거나 또는 완전히 상이할 수 있다는 점이 이해될 수 있다(예를 들어, 제1 필드 세트에서의 필드들에서 반송되는 인덱스들은 구체적으로 동일한 플로우 테이블 엔트리 식별자일 수 있음). 필드의 실제 값의 인덱스가 오픈플로우 스위치에 이미 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자인 경우, 오픈플로우 스위치에 의한 필드의 실제 값에 대한 인덱싱의 방식은 크게 단순화될 수 있을 뿐만 아니라, 오픈플로우 스위치에 의한 필드의 실제 값에 대한 인덱싱의 효율은 개선될 수 있다는 점이 이해될 수 있다. 또한, 플로우 테이블 엔트리 식별자는 일반적으로 비교적 작은 데이터 볼륨을 갖는데, 이는 SDN 제어기(800)가 전달된 제1 플로우 테이블 엔트리의 데이터 볼륨을 비교적 바람직하게 제어하는 것을 돕는다.
본 발명의 일부 구현 방식들에서, 제1 플로우 테이블 엔트리에서의 제2 필드 세트의 각각의 필드는 이 필드의 다수의 실제 값을 추가로 반송할 수 있다. 제2 필드 세트는 M개의 필드를 포함하고, M은 양의 정수이다. 필드들의 실제 값들의 예들은 위에서 설명되어 있다. 제2 필드 세트에서의 각각의 필드가 이 필드의 다수의 실제 값을 추가로 반송할 수 있기 때문에, 그것은 제1 플로우 테이블 엔트리가 다수의 플로우 테이블 엔트리로 분할될 수 있다는 것을 등가적으로 표시하며, 이는 또한 SDN 제어기(800)가 전달된 제1 플로우 테이블 엔트리의 데이터 볼륨을 비교적 바람직하게 제어하는 것을 돕는다는 점이 이해될 수 있다. 예를 들어, 제1 플로우 테이블 엔트리에서의 제2 필드 세트는 목적지 MAC 어드레스 필드를 포함하고, 목적지 MAC 어드레스 필드는 3개의 목적지 MAC 어드레스를 반송한다(예를 들어, 목적지 MAC 어드레스 필드에서 반송되는 정보는 다음과 같이 192.168.0.2, 192.168.0.3 및 192.168.0.4이거나, 또는 목적지 MAC 어드레스 필드에서 반송되는 정보는 다음과 같이 192.168.0.2 내지 192.168.0.4이며, 전술한 예들에서의 2가지 방식 양쪽 모두는 목적지 MAC 어드레스 필드가 3개의 목적지 MAC 어드레스를 반송한다는 것을 나타낼 수 있고; 분명하게도, 목적지 MAC 어드레스 필드가 3개의 MAC 어드레스를 반송하는 것은 다른 방식으로 표현될 수도 있다). 이 시나리오에서, 오픈플로우 스위치는 제1 플로우 테이블 엔트리를 4개의 플로우 테이블 엔트리로 분할할 수도 있다. 3개의 플로우 테이블 엔트리의 목적지 MAC 어드레스 필드들은 각각 전술한 3개의 목적지 MAC 어드레스 중 상이한 어드레스를 반송하며, 3개의 플로우 테이블 엔트리의 다른 필드들은 동일하다. 분명하게도, 3개의 플로우 테이블 엔트리의 다른 필드가 다수의 실제 값을 또한 반송하는 경우, 3개의 플로우 테이블 엔트리는 각각 유사한 방식에 따라 분할될 수 있다. 예를 들어, 분할을 통해 획득되는 3개의 플로우 테이블 엔트리의 가상 로컬 영역 네트워크 식별자 필드는 2개의 가상 로컬 영역 네트워크 식별자를 반송하며, 3개의 플로우 테이블 엔트리 중의 각각의 플로우 테이블 엔트리는 2개의 플로우 테이블 엔트리로 추가로 분할될 수 있다. 특정 분할 방식이 도 1i 및 도 1j에 도시될 수 있다. 분할은, 획득된 플로우 테이블 엔트리의 각각의 필드가 단지 하나의 실제 값 또는 이 필드의 하나의 실제 값의 인덱스를 반송할 때에만 중단될 수 있다.
본 발명의 실시예들에서의 M은 예를 들어 1, 2, 5, 8, 10 또는 다른 값과 동일할 수 있다.
제1 플로우 테이블 엔트리에서의 제2 필드 세트에 포함된 M개의 필드는, 제1 플로우 테이블 엔트리에 있으며 제1 필드 세트에서의 임의의 필드와는 상이한 임의의 M개의 필드일 수 있다. 제2 필드 세트에 포함된 M개의 필드는 제1 플로우 테이블 엔트리에서의 인접한 M개의 필드, 부분적으로 인접한 M개의 필드 또는 인접하지 않은 M개의 필드일 수 있다. M개의 필드는 예를 들어 다음의 필드들: 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드, 프로토콜 필드 등 중 적어도 하나를 포함할 수 있다.
제2 필드 세트와 제1 필드 세트의 교집합은 공집합이다.
도 8b에 도시된 바와 같이, 본 발명의 일부 실시예들에서, SDN 제어기는, 생성 유닛(810)이 제1 플로우 테이블 엔트리를 생성하기 이전에, 스위치로부터 제1 패킷 또는 제1 패킷의 패킷 헤더를 수신하고, 미리 설정된 처리 정책에 따라, 제1 패킷을 처리하는데 이용되는 라우팅 명령어 세트를 결정하도록 구성된 수신 유닛(830)을 더 포함하고, 제1 플로우 테이블 엔트리의 명령어 필드가 라우팅 명령어 세트 또는 라우팅 명령어 세트의 인덱스를 반송한다.
예를 들어, 오픈플로우 스위치로부터 제1 패킷 또는 제1 패킷의 패킷을 수신하는 것은, 오픈플로우 스위치로부터의 제1 패킷 또는 제1 패킷의 패킷 헤더를 반송하는 오픈플로우 프로토콜 메시지(오픈플로우 프로토콜 메시지는 예를 들어 packet_in(packet_in) 메시지 또는 다른 오픈플로우 프로토콜 메시지임)를 수신하는 것을 포함할 수 있다. 분명하게도, 오픈플로우 프로토콜 메시지는 하나 이상의 다른 패킷 또는 패킷 헤더를 추가로 반송할 수 있다. 분명하게도, 오픈플로우 프로토콜 메시지는 다른 정보를 추가로 반송할 수 있다.
본 발명의 일부 구현 방식들에서, 동일한 플로우 테이블 엔트리에 대해, 동일한 플로우 테이블 엔트리를 식별하는데 이용되며 오픈플로우 스위치 및 SDN 제어기(800)에 있는 플로우 테이블 엔트리 식별자들은 동일할 수도 있고 합의된 매핑 관계를 가질 수도 있다. 특정된 매핑 관계를 갖는 플로우 테이블 엔트리 식별자들이 동일한 플로우 테이블 엔트리를 식별하기 위해 오픈플로우 스위치 및 SDN 제어기(800)에서 이용되는 경우, 오픈플로우 스위치 및 SDN 제어기(800)는 양쪽 모두 특정된 매핑 관계를 이용함으로써 피어 엔드 디바이스에서의 동일한 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자를 추론할 수 있다.
이 실시예에서의 SDN 제어기(800)의 기능 모듈들의 기능들은 전술한 방법 실시예에서의 방법에 따라 구체적으로 구현될 수 있다는 점이 이해될 수 있다. 기능들의 특정 구현 프로세스들에 대해, 전술한 방법 실시예의 관련 설명에 대한 참조가 이루어질 수 있고, 상세내용들은 여기서 더 이상 설명되지 않는다.
이 실시예에서의 해결책에서, SDN 제어기(800)에 의해 오픈플로우 스위치로 송신된 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에 대해, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값을 반송하는 대신에 제1 필드 세트에서의 실제 값의 인덱스를 반송한다는 것을 알 수 있다. 기술적 구현에서, 필드의 실제 값의 인덱스의 데이터 볼륨은 일반적으로 이 필드의 실제 값의 데이터 볼륨보다 더 작거나 심지어는 훨씬 더 작다. 그러므로, 이 실시예에서 플로우 테이블 엔트리를 전달하는 메커니즘은 SDN 제어기(800)와 오픈플로우 스위치 사이의 제어 채널의 오버헤드를 감소시키는 것을 돕고, 그에 의해 제어 채널의 정체 위험을 감소시키고, 또한 스위칭 디바이스의 네트워크 리소스들의 소모를 감소시키는 것을 돕고, 복잡한 네트워킹의 요건을 충족시키는 것을 돕는다.
도 9a를 참조하면, 본 발명의 실시예는, 수신 유닛(910), 획득 유닛(920) 및 대체 유닛(930)을 포함할 수 있는 오픈플로우 스위치(900)를 추가로 제공한다.
수신 유닛(910)은 오픈플로우 프로토콜 메시지를 수신하도록 구성되고, 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수이다.
제1 플로우 테이블 엔트리를 반송하는 오픈플로우 프로토콜 메시지는 예를 들어 flow_mod 메시지 또는 다른 오픈플로우 프로토콜 메시지일 수 있다.
제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 임의의 N개의 필드일 수 있다. 제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 인접한 N개의 필드, 부분적으로 인접한 N개의 필드 또는 인접하지 않은 N개의 필드일 수 있다. N개의 필드는 예를 들어 다음의 필드들: 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드, 프로토콜 필드 등 중 적어도 하나를 포함할 수 있다.
획득 유닛(920)은 제1 필드 세트에서의 실제 값의 인덱스에 기초하여 제1 필드 세트에서의 실제 값을 획득하도록 구성된다.
대체 유닛(930)은, 제1 필드 세트에서의 실제 값의 것이며 제1 플로우 테이블 엔트리에서의 제1 필드 세트에서 반송되는 인덱스를, 획득 유닛(920)에 의해 획득되는 제1 필드 세트의 실제 값으로 대체하도록 구성된다.
실제 값의 인덱스는 다양한 타입들을 가질 수 있으며, 오픈플로우 스위치가 실제 값의 인덱스에 따라 실제 값을 획득할 수 있는 한, 요건이 충족될 수 있다는 점이 이해될 수 있다. 본 발명의 일부 구현 방식들에서, 실제 값의 인덱스는 예를 들어 오픈플로우 스위치(900)에 이미 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자를 포함할 수 있는데, 즉 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 임의의 필드에서 반송되는 인덱스는 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있다. N이 1보다 큰 경우, 제1 필드 세트에서의 필드들에서 반송되는 인덱스들은 완전히 동일하거나 부분적으로 동일하거나 또는 완전히 상이할 수 있다는 점이 이해될 수 있다. 예를 들어, 제1 필드 세트에서의 필드들에서 반송되는 인덱스들은 구체적으로 동일한 플로우 테이블 엔트리 식별자일 수 있다. 필드의 실제 값의 인덱스가 오픈플로우 스위치에 이미 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자인 경우, 오픈플로우 스위치에 의한 필드의 실제 값에 대한 인덱싱의 방식은 크게 단순화될 수 있을 뿐만 아니라, 오픈플로우 스위치에 의한 필드의 실제 값에 대한 인덱싱의 효율은 개선될 수 있다는 점이 이해될 수 있다. 또한, 플로우 테이블 엔트리 식별자는 일반적으로 비교적 작은 데이터 볼륨을 갖는데, 이는 SDN 제어기가 전달된 제1 플로우 테이블 엔트리의 데이터 볼륨을 비교적 바람직하게 제어하는 것을 돕는다.
제1 필드 세트에서의 필드의 실제 값은 이 필드가 반송해야 하는 표준 값을 나타낸다. 예를 들어, 포트 번호 필드의 실제 값은 포트 번호이고, 소스 IP 어드레스 필드의 실제 값은 소스 IP 어드레스이고, 목적지 IP 어드레스 필드의 실제 값은 목적지 IP 어드레스이고, 목적지 MAC 어드레스 필드의 실제 값은 목적지 MAC 어드레스이고, 가상 로컬 영역 네트워크 식별자 필드의 실제 값은 가상 로컬 영역 네트워크 식별자이고, 소스 MAC 어드레스 필드의 실제 값은 소스 MAC 어드레스이고, 다른 필드의 실제 값은 그에 따라 추론된다. 본 발명의 이 실시예에서, SDN 제어기에 의해 전달되는 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 필드는 이 필드의 실제 값을 반송하지 않고, 대신에 이 필드의 실제 값의 인덱스를 반송하는데, 여기서 인덱스는 이 필드의 실제 값이 인덱싱될 수 있는 정보이다. 제1 필드 세트가 포트 번호 필드를 포함한다고 가정하면, 포트 번호 필드는 포트 번호를 반송하지 않고, 대신에 포트 번호가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 소스 IP 어드레스 필드를 포함하고, 소스 IP 어드레스 필드는 소스 IP 어드레스를 반송하지 않고, 대신에 소스 IP 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 목적지 IP 어드레스 필드를 포함하고, 목적지 IP 어드레스 필드는 목적지 IP 어드레스를 반송하지 않고, 대신에 목적지 IP 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 가상 로컬 영역 네트워크 식별자 필드를 포함하고, 가상 로컬 영역 네트워크 식별자 필드는 가상 로컬 영역 네트워크 식별자를 반송하지 않고, 대신에 가상 로컬 영역 네트워크 식별자가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 목적지 MAC 어드레스 필드를 포함하고, 목적지 MAC 어드레스 필드는 목적지 MAC 어드레스를 반송하지 않고, 대신에 목적지 MAC 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 소스 MAC 어드레스 필드를 포함하고, 소스 MAC 어드레스 필드는 소스 MAC 어드레스를 반송하지 않고, 대신에 소스 MAC 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 제1 필드 세트가 다른 프로토콜 필드를 더 포함하는 경우, 관련 경우가 그에 따라 추론된다.
본 발명의 일부 실시예들에서, 인덱스가 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자인 경우, 획득 유닛(920)은, 플로우 테이블 엔트리 식별자에 기초하여, 플로우 테이블 엔트리 식별자에 의해 표현된 플로우 테이블 엔트리에 있으며 제1 필드 세트와 동일한 프로토콜 타입을 갖는 제3 필드 세트에 채워진 실제 값을 획득하도록 구체적으로 구성되고, 제3 필드 세트 및 제1 필드 세트에 있으며 동일한 프로토콜 타입을 갖는 필드들은 동일한 실제 값을 갖는다.
도 9b에 도시된 바와 같이, 본 발명의 일부 실시예들에서, 오픈플로우 스위치(900)는, 저장된 제1 플로우 테이블 엔트리 또는 제1 플로우 테이블 엔트리의 식별자를 소프트웨어 정의 네트워크 제어기로 송신하도록 구성된 제1 송신 유닛(940)을 더 포함한다.
도 9c에 도시된 바와 같이, 본 발명의 일부 실시예들에서, 오픈플로우 스위치(900)는,
제1 플로우 테이블 엔트리가 수신되기 이전에, 제1 패킷 또는 제1 패킷의 패킷 헤더를 소프트웨어 정의 네트워크 제어기로 송신하도록 구성된 제2 송신 유닛(950) - 제1 플로우 테이블 엔트리의 명령어 필드는 제1 패킷을 처리하는데 이용되는 라우팅 명령어 세트 또는 라우팅 명령어 세트의 인덱스를 반송함 -; 및
라우팅 명령어 세트에 기초하여 제1 패킷을 처리하도록 구성된 패킷 처리 유닛(960)
을 더 포함할 수 있다.
본 발명의 일부 구현 방식들에서, 동일한 플로우 테이블 엔트리에 대해, 오픈플로우 스위치(900) 및 SDN 제어기에서 플로우 테이블 엔트리를 식별하는데 이용되는 플로우 테이블 엔트리 식별자들은 동일할 수도 있고 합의된 매핑 관계를 가질 수도 있다. 오픈플로우 스위치(900) 및 SDN 제어기 양쪽 모두는 특정된 매핑 관계를 이용함으로써 피어 엔드 디바이스에서의 동일한 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자를 추론할 수 있다.
이 실시예에서의 오픈플로우 스위치(900)의 기능 모듈들의 기능들은 전술한 방법 실시예에서의 방법에 따라 구체적으로 구현될 수 있다는 점이 이해될 수 있다. 기능들의 특정 구현 프로세스들에 대해, 전술한 방법 실시예의 관련 설명에 대한 참조가 이루어질 수 있고, 상세내용들은 여기서 더 이상 설명되지 않는다.
이 실시예에서, SDN 제어기에 의해 오픈플로우 스위치(900)로 송신된 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에 대해, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값을 반송하는 대신에 제1 필드 세트에서의 실제 값의 인덱스를 반송한다는 것을 알 수 있다. 기술적 구현에서, 필드의 실제 값의 인덱스의 데이터 볼륨은 일반적으로 이 필드의 실제 값의 데이터 볼륨보다 더 작거나 심지어는 훨씬 더 작다. 그러므로, 이 실시예에서 플로우 테이블 엔트리를 전달하는 메커니즘은 SDN 제어기와 오픈플로우 스위치(900) 사이의 제어 채널의 오버헤드를 감소시키는 것을 돕고, 그에 의해 제어 채널의 정체 위험을 감소시키고, 또한 오픈플로우 스위치(900)의 네트워크 리소스들의 소모를 감소시키는 것을 돕고, 복잡한 네트워킹의 요건을 충족시키는 것을 돕는다.
도 10을 참조하면, 본 발명의 실시예는, 수신 유닛(1010), 결합 유닛(1020) 및 송신 유닛(1030)을 포함할 수 있는 가상 계층 디바이스(1000)를 추가로 제공한다.
수신 유닛(1010)은 제1 소프트웨어 정의 네트워크 제어기로부터 제1 오픈플로우 프로토콜 메시지를 수신하고 - 제1 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 제1 플로우 테이블 엔트리에서의 제1 필드는 제1 필드에서의 실제 값의 인덱스를 반송함 -; 제2 소프트웨어 정의 네트워크 제어기로부터 제2 오픈플로우(OpenFlow) 프로토콜 메시지를 수신하도록 구성되고, 제2 오픈플로우 프로토콜 메시지는 제2 플로우 테이블 엔트리를 반송하고, 제2 플로우 테이블 엔트리에서의 제4 필드는 제4 필드에서의 실제 값의 인덱스를 반송한다.
결합 유닛(1020)은 제1 플로우 테이블 엔트리와 제2 플로우 테이블 엔트리를 제3 플로우 테이블 엔트리로 결합하도록 구성된다.
송신 유닛(1030)은 제3 플로우 테이블 엔트리를 반송하는 제3 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하도록 구성된다.
각각의 플로우 테이블 엔트리는 다양한 상이한 프로토콜 타입들의 필드들을 갖고, 각각의 플로우 테이블 엔트리는 동일한 수량의 필드들을 갖고, 상이한 플로우 테이블 엔트리들에서의 동일한 프로토콜 타입의 필드들에 채워진 데이터는 동일할 수도 있고 상이할 수도 있다는 점이 이해될 수 있다.
가상 계층 디바이스는 다양한 방식들을 이용함으로써 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리를 제3 플로우 테이블 엔트리로 결합할 수 있다.
소위 다수의 플로우 테이블 엔트리를 결합하는 것은 주로 다수의 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드들에 채워진 데이터를 결합하는 것을 지칭한다. 예를 들어, 제2 플로우 테이블 엔트리 및 제2 플로우 테이블 엔트리 양쪽 모두가 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드 및 다른 프로토콜 타입의 필드를 포함한다고 가정하면, 결합 유닛(1020)은 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 포트 번호 필드들에 채워진 데이터를 결합하고, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 소스 IP 어드레스 필드들에 채워진 데이터를 결합하고, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 목적지 MAC 어드레스 필드들에 채워진 데이터를 결합하고, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 목적지 IP 어드레스 필드들에 채워진 데이터를 결합하고, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 가상 로컬 영역 네트워크 식별자 필드들에 채워진 데이터를 결합하고, 그리고/또는 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 소스 MAC 어드레스 필드들에 채워진 데이터를 결합할 수 있고, 다른 프로토콜 타입의 필드들에 채워진 데이터를 결합하는 방식은 그에 따라 추론될 수 있다.
본 발명의 일부 구현 방식들에서, 결합 유닛(1020)은 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 각각의 필드를 검출할 수 있고, 여기서 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드들에 채워진 데이터가 동일한 경우, 이러한 동일한 채워진 데이터는 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드에 채워지고; 또는 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드들에 채워진 데이터가 상이한 경우, 이러한 상이한 채워진 데이터는 제3 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드에 채워진다. 이러한 방식으로, 제3 플로우 테이블 엔트리에서, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 것이며 동일한 채워진 데이터를 갖는 필드들의 채워진 데이터에 대해, 이 채워진 데이터의 2개의 조각 중 하나만이 제3 플로우 테이블 엔트리에서의 대응하는 동일한 프로토콜 타입의 필드에 채워진다. 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 것이며 상이한 채워진 데이터를 갖는 필드들에 채워진 데이터에 대해, 이러한 상이한 채워진 데이터는 제3 플로우 테이블 엔트리에서의 대응하는 동일한 프로토콜 타입의 필드에 채워진다. 이러한 방식으로, 제3 플로우 테이블 엔트리의 데이터 볼륨이 제2 플로우 테이블 엔트리의 데이터 볼륨과 제1 플로우 테이블 엔트리의 데이터 볼륨의 합보다 더 작은 것이 소정 정도로 구현될 수 있다.
이 실시예에서의 가상 계층 디바이스(1000)의 기능 모듈들의 기능들은 전술한 방법 실시예에서의 방법에 따라 구체적으로 구현될 수 있다는 점이 이해될 수 있다. 기능들의 특정 구현 프로세스들에 대해, 전술한 방법 실시예의 관련 설명에 대한 참조가 이루어질 수 있고, 상세내용들은 여기서 더 이상 설명되지 않는다.
이 실시예에서, SDN 제어기에 의해 오픈플로우 스위치로 송신된 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에 대해, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값을 반송하는 대신에 제1 필드 세트에서의 실제 값의 인덱스를 반송한다는 것을 알 수 있다. 기술적 구현에서, 필드의 실제 값의 인덱스의 데이터 볼륨은 일반적으로 이 필드의 실제 값의 데이터 볼륨보다 더 작거나 심지어는 훨씬 더 작다. 그러므로, 이 실시예에서 플로우 테이블 엔트리를 전달하는 메커니즘은 SDN 제어기와 오픈플로우 스위치 사이의 제어 채널의 오버헤드를 감소시키는 것을 돕고, 그에 의해 제어 채널의 정체 위험을 감소시키고, 또한 스위칭 디바이스의 네트워크 리소스들의 소모를 감소시키는 것을 돕고, 복잡한 네트워킹의 요건을 충족시키는 것을 돕는다. 또한, SDN 제어기와 오픈플로우 스위치 사이의 가상 계층 디바이스(1000)는 수개의 플로우 테이블 엔트리를 추가로 결합할 수 있다. 이러한 방식으로, 전송되는 플로우 테이블 엔트리들의 데이터 볼륨이 추가로 감소된다.
도 11을 참조하면, 도 11은 본 발명의 실시예에 따른 소프트웨어 정의 네트워크 제어기(1100)의 개략도이다. 소프트웨어 정의 네트워크 제어기(1100)는 적어도 하나의 버스(1101), 버스(1101)에 접속된 적어도 하나의 프로세서(1102) 및 버스(1101)에 접속된 적어도 하나의 메모리(1103)를 포함할 수 있다.
프로세서(1102)는, 버스(1101)를 이용함으로써, 메모리(1103)에 저장된 코드를 인보크하여, 제1 플로우 테이블 엔트리를 생성하고 - 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -; 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신한다 - 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송함 -.
제1 플로우 테이블 엔트리를 반송하는 오픈플로우 프로토콜 메시지는 예를 들어 플로우 수정(flow_mod) 메시지 또는 다른 오픈플로우 프로토콜 메시지일 수 있다.
제1 플로우 테이블 엔트리는 표준 플로우 테이블 엔트리의 데이터 구조와 동일한 데이터 구조를 가질 수 있다는 점이 이해될 수 있다. 예를 들어, 제1 플로우 테이블 엔트리에 포함된 프로토콜 필드의 타입 및 제1 플로우 테이블 엔트리에서의 모든 타입의 프로토콜 필드들 사이의 위치 관계는 표준 플로우 테이블 엔트리의 것들과 동일할 수 있다. 그러나, 제1 플로우 테이블 엔트리에서의 프로토콜 필드들 중 일부 또는 전부에서 반송되는 정보의 타입은 표준 플로우 테이블 엔트리에서의 것과 상이하다. 구체적으로, 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 필드는 이 필드의 실제 값의 인덱스를 반송하는 한편, 표준 플로우 테이블 엔트리에서의 각각의 필드는 이 필드의 실제 값을 반송한다.
본 발명의 실시예들에서의 N은 예를 들어 1, 2, 5, 8, 10 또는 다른 값과 동일할 수 있다.
제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 임의의 N개의 필드일 수 있다. 제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 인접한 N개의 필드, 부분적으로 인접한 N개의 필드 또는 인접하지 않은 N개의 필드일 수 있는데, 즉 제1 필드 세트에서의 필드들이 제1 플로우 테이블 엔트리에서 임의로 분산될 수 있는 위치들일 수 있고, 이는 다양한 실제 애플리케이션 시나리오들의 유연한 요건들을 더 유연하게 충족시키는 것을 돕는다. N개의 필드는 예를 들어 다음의 필드들: 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드 등 중 적어도 하나를 포함할 수 있다. 제1 필드 세트에서의 필드의 실제 값은 이 필드가 반송해야 하는 표준 값을 나타낸다. 예를 들어, 포트 번호 필드의 실제 값은 포트 번호이고, 소스 IP 어드레스 필드의 실제 값은 소스 IP 어드레스이고, 목적지 IP 어드레스 필드의 실제 값은 목적지 IP 어드레스이고, 목적지 MAC 어드레스 필드의 실제 값은 목적지 MAC 어드레스이고, 가상 로컬 영역 네트워크 식별자 필드의 실제 값은 가상 로컬 영역 네트워크 식별자이고, 소스 MAC 어드레스 필드의 실제 값은 소스 MAC 어드레스이고, 다른 필드의 실제 값은 그에 따라 추론된다. 본 발명의 이 실시예에서, 소프트웨어 정의 네트워크 제어기(1100)에 의해 전달되는 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 필드는 이 필드의 실제 값을 반송하지 않고, 대신에 이 필드의 실제 값의 인덱스를 반송하는데, 여기서 인덱스는 이 필드의 실제 값이 인덱싱될 수 있는 정보이다. 제1 필드 세트가 포트 번호 필드를 포함한다고 가정하면, 포트 번호 필드는 포트 번호를 반송하지 않고, 대신에 포트 번호가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 소스 IP 어드레스 필드를 포함하고, 소스 IP 어드레스 필드는 소스 IP 어드레스를 반송하지 않고, 대신에 소스 IP 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 목적지 IP 어드레스 필드를 포함하고, 목적지 IP 어드레스 필드는 목적지 IP 어드레스를 반송하지 않고, 대신에 목적지 IP 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 가상 로컬 영역 네트워크 식별자 필드를 포함하고, 가상 로컬 영역 네트워크 식별자 필드는 가상 로컬 영역 네트워크 식별자를 반송하지 않고, 대신에 가상 로컬 영역 네트워크 식별자가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 목적지 MAC 어드레스 필드를 포함하고, 목적지 MAC 어드레스 필드는 목적지 MAC 어드레스를 반송하지 않고, 대신에 목적지 MAC 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 소스 MAC 어드레스 필드를 포함하고, 소스 MAC 어드레스 필드는 소스 MAC 어드레스를 반송하지 않고, 대신에 소스 MAC 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 제1 필드 세트가 다른 프로토콜 필드를 더 포함하는 경우, 관련 경우가 그에 따라 추론된다.
실제 값의 인덱스는 다양한 타입들을 가질 수 있으며, 오픈플로우 스위치가 실제 값의 인덱스에 따라 실제 값을 획득할 수 있는 한, 요건이 충족될 수 있다는 점이 이해될 수 있다. 본 발명의 일부 구현 방식들에서, 실제 값의 인덱스는 예를 들어 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자를 포함할 수 있는데, 즉 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 임의의 필드에서 반송되는 인덱스는 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있다. N이 1보다 큰 경우, 제1 필드 세트에서의 필드들에서 반송되는 인덱스들은 완전히 동일하거나 부분적으로 동일하거나 또는 완전히 상이할 수 있다는 점이 이해될 수 있다(예를 들어, 제1 필드 세트에서의 필드들에서 반송되는 인덱스들은 구체적으로 동일한 플로우 테이블 엔트리 식별자일 수 있음). 필드의 실제 값의 인덱스가 오픈플로우 스위치에 이미 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자인 경우, 오픈플로우 스위치에 의한 필드의 실제 값에 대한 인덱싱의 방식은 크게 단순화될 수 있을 뿐만 아니라, 오픈플로우 스위치에 의한 필드의 실제 값에 대한 인덱싱의 효율은 개선될 수 있다는 점이 이해될 수 있다. 또한, 플로우 테이블 엔트리 식별자는 일반적으로 비교적 작은 데이터 볼륨을 갖는데, 이는 소프트웨어 정의 네트워크 제어기(1100)가 전달된 제1 플로우 테이블 엔트리의 데이터 볼륨을 비교적 바람직하게 제어하는 것을 돕는다.
본 발명의 일부 구현 방식들에서, 제1 플로우 테이블 엔트리에서의 제2 필드 세트의 각각의 필드는 이 필드의 다수의 실제 값을 추가로 반송할 수 있다. 제2 필드 세트는 M개의 필드를 포함하고, M은 양의 정수이다. 필드들의 실제 값들의 예들은 위에서 설명되어 있다. 제2 필드 세트에서의 각각의 필드가 이 필드의 다수의 실제 값을 추가로 반송할 수 있기 때문에, 그것은 제1 플로우 테이블 엔트리가 다수의 플로우 테이블 엔트리로 분할될 수 있다는 것을 등가적으로 표시하며, 이는 또한 소프트웨어 정의 네트워크 제어기(1100)가 전달된 제1 플로우 테이블 엔트리의 데이터 볼륨을 비교적 바람직하게 제어하는 것을 돕는다는 점이 이해될 수 있다.
본 발명의 실시예들에서의 M은 예를 들어 1, 2, 5, 8, 10 또는 다른 값과 동일할 수 있다.
제1 플로우 테이블 엔트리에서의 제2 필드 세트에 포함된 M개의 필드는, 제1 플로우 테이블 엔트리에 있으며 제1 필드 세트에서의 임의의 필드와는 상이한 임의의 M개의 필드일 수 있다. 제2 필드 세트에 포함된 M개의 필드는 제1 플로우 테이블 엔트리에서의 인접한 M개의 필드, 부분적으로 인접한 M개의 필드 또는 인접하지 않은 M개의 필드일 수 있다. M개의 필드는 예를 들어 다음의 필드들: 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드, 프로토콜 필드 등 중 적어도 하나를 포함할 수 있다.
제2 필드 세트와 제1 필드 세트의 교집합은 공집합이다.
이 실시예에서의 소프트웨어 정의 네트워크 제어기(1100)의 기능 모듈들의 기능들은 전술한 방법 실시예에서의 방법에 따라 구체적으로 구현될 수 있다는 점이 이해될 수 있다. 기능들의 특정 구현 프로세스들에 대해, 전술한 방법 실시예의 관련 설명에 대한 참조가 이루어질 수 있고, 상세내용들은 여기서 더 이상 설명되지 않는다.
이 실시예에서의 해결책에서, SDN 제어기에 의해 오픈플로우 스위치로 송신된 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에 대해, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값을 반송하는 대신에 제1 필드 세트에서의 실제 값의 인덱스를 반송한다는 것을 알 수 있다. 기술적 구현에서, 필드의 실제 값의 인덱스의 데이터 볼륨은 일반적으로 이 필드의 실제 값의 데이터 볼륨보다 더 작거나 심지어는 훨씬 더 작다. 그러므로, 이 실시예에서 플로우 테이블 엔트리를 전달하는 메커니즘은 SDN 제어기와 오픈플로우 스위치 사이의 제어 채널의 오버헤드를 감소시키는 것을 돕고, 그에 의해 제어 채널의 정체 위험을 감소시키고, 또한 스위칭 디바이스의 네트워크 리소스들의 소모를 감소시키는 것을 돕고, 복잡한 네트워킹의 요건을 충족시키는 것을 돕는다.
도 12를 참조하면, 도 12는 본 발명의 다른 실시예에 따른 소프트웨어 정의 네트워크 제어기(1200)의 구조적인 블록도이다.
소프트웨어 정의 네트워크 제어기(1200)는 적어도 하나의 프로세서(1201), 적어도 하나의 네트워크 인터페이스(1204) 또는 다른 사용자 인터페이스(1203), 메모리(1205) 및 적어도 하나의 통신 버스(1202)를 포함할 수 있다. 통신 버스(1202)는 이러한 컴포넌트들 사이의 접속 및 통신을 구현하도록 구성된다. 소프트웨어 정의 네트워크 제어기(1200)는 선택적으로 사용자 인터페이스(1203)를 포함하는데, 이 사용자 인터페이스는 디스플레이(예를 들어, 터치 스크린, LCD, CRT, 홀로그래픽(Holographic) 또는 프로젝터(Projector)), 클릭 디바이스(예를 들어, 마우스, 트랙볼(trackball), 터치 패드 또는 터치 스크린), 및 카메라 및/또는 사운드 픽업 장치를 포함한다.
메모리(1202)는 예를 들어 판독 전용 메모리 및 랜덤 액세스 메모리를 포함하고, 프로세서(1201)에 명령어 및 데이터를 제공할 수 있다.
메모리(1202)에서의 일부는 비휘발성 메모리(NVRAM)를 더 포함한다.
일부 구현 방식들에서, 메모리(1205)는 다음의 요소들, 실행가능한 모듈 또는 데이터 구조, 또는 그것의 서브세트, 또는 그것의 확장 세트를 저장한다:
다양한 기본 서비스들을 구현하고 하드웨어 기반 태스크들을 처리하도록 구성된, 다양한 시스템 프로그램들을 포함하는 운영 체제(12051); 및
다양한 애플리케이션 프로그램들을 포함하고, 다양한 애플리케이션 서비스들을 구현하는데 이용되는 애플리케이션 프로그램 모듈(12052).
본 발명의 이 실시예에서, 메모리(1205)에 저장된 명령어 또는 프로그램들을 인보크함으로써, 프로세서(1201)는 제1 플로우 테이블 엔트리를 생성하고 - 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -, 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신한다 - 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송함 -.
제1 플로우 테이블 엔트리를 반송하는 오픈플로우 프로토콜 메시지는 예를 들어 flow_mod 메시지 또는 다른 오픈플로우 프로토콜 메시지일 수 있다.
제1 플로우 테이블 엔트리는 표준 플로우 테이블 엔트리의 데이터 구조와 동일한 데이터 구조를 가질 수 있다는 점이 이해될 수 있다. 예를 들어, 제1 플로우 테이블 엔트리에 포함된 프로토콜 필드의 타입 및 제1 플로우 테이블 엔트리에서의 모든 타입의 프로토콜 필드들 사이의 위치 관계는 표준 플로우 테이블 엔트리의 것들과 동일할 수 있다. 그러나, 제1 플로우 테이블 엔트리에서의 프로토콜 필드들 중 일부 또는 전부에서 반송되는 정보의 타입은 표준 플로우 테이블 엔트리에서의 것과 상이하다. 구체적으로, 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 필드는 이 필드의 실제 값의 인덱스를 반송하는 한편, 표준 플로우 테이블 엔트리에서의 각각의 필드는 이 필드의 실제 값을 반송한다.
본 발명의 실시예들에서의 N은 예를 들어 1, 2, 5, 8, 10 또는 다른 값과 동일할 수 있다.
제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 임의의 N개의 필드일 수 있다. 제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 인접한 N개의 필드, 부분적으로 인접한 N개의 필드 또는 인접하지 않은 N개의 필드일 수 있는데, 즉 제1 필드 세트에서의 필드들이 제1 플로우 테이블 엔트리에서 임의로 분산될 수 있는 위치들일 수 있고, 이는 다양한 실제 애플리케이션 시나리오들의 유연한 요건들을 더 유연하게 충족시키는 것을 돕는다. N개의 필드는 예를 들어 다음의 필드들: 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드 등 중 적어도 하나를 포함할 수 있다. 제1 필드 세트에서의 필드의 실제 값은 이 필드가 반송해야 하는 표준 값을 나타낸다. 예를 들어, 포트 번호 필드의 실제 값은 포트 번호이고, 소스 IP 어드레스 필드의 실제 값은 소스 IP 어드레스이고, 목적지 IP 어드레스 필드의 실제 값은 목적지 IP 어드레스이고, 목적지 MAC 어드레스 필드의 실제 값은 목적지 MAC 어드레스이고, 가상 로컬 영역 네트워크 식별자 필드의 실제 값은 가상 로컬 영역 네트워크 식별자이고, 소스 MAC 어드레스 필드의 실제 값은 소스 MAC 어드레스이고, 다른 필드의 실제 값은 그에 따라 추론된다. 본 발명의 이 실시예에서, 소프트웨어 정의 네트워크 제어기(1200)에 의해 전달되는 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 필드는 이 필드의 실제 값을 반송하지 않고, 대신에 이 필드의 실제 값의 인덱스를 반송하는데, 여기서 인덱스는 이 필드의 실제 값이 인덱싱될 수 있는 정보이다. 제1 필드 세트가 포트 번호 필드를 포함한다고 가정하면, 포트 번호 필드는 포트 번호를 반송하지 않고, 대신에 포트 번호가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 소스 IP 어드레스 필드를 포함하고, 소스 IP 어드레스 필드는 소스 IP 어드레스를 반송하지 않고, 대신에 소스 IP 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 목적지 IP 어드레스 필드를 포함하고, 목적지 IP 어드레스 필드는 목적지 IP 어드레스를 반송하지 않고, 대신에 목적지 IP 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 가상 로컬 영역 네트워크 식별자 필드를 포함하고, 가상 로컬 영역 네트워크 식별자 필드는 가상 로컬 영역 네트워크 식별자를 반송하지 않고, 대신에 가상 로컬 영역 네트워크 식별자가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 목적지 MAC 어드레스 필드를 포함하고, 목적지 MAC 어드레스 필드는 목적지 MAC 어드레스를 반송하지 않고, 대신에 목적지 MAC 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 다른 예에 있어서, 제1 필드 세트는 소스 MAC 어드레스 필드를 포함하고, 소스 MAC 어드레스 필드는 소스 MAC 어드레스를 반송하지 않고, 대신에 소스 MAC 어드레스가 인덱싱될 수 있는 인덱스를 반송한다. 제1 필드 세트가 다른 프로토콜 필드를 더 포함하는 경우, 관련 경우가 그에 따라 추론된다.
실제 값의 인덱스는 다양한 타입들을 가질 수 있으며, 오픈플로우 스위치가 실제 값의 인덱스에 따라 실제 값을 획득할 수 있는 한, 요건이 충족될 수 있다는 점이 이해될 수 있다. 본 발명의 일부 구현 방식들에서, 실제 값의 인덱스는 예를 들어 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자를 포함할 수 있는데, 즉 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에서의 제1 필드 세트의 임의의 필드에서 반송되는 인덱스는 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자일 수 있다. N이 1보다 큰 경우, 제1 필드 세트에서의 필드들에서 반송되는 인덱스들은 완전히 동일하거나 부분적으로 동일하거나 또는 완전히 상이할 수 있다는 점이 이해될 수 있다(예를 들어, 제1 필드 세트에서의 필드들에서 반송되는 인덱스들은 구체적으로 동일한 플로우 테이블 엔트리 식별자일 수 있음). 필드의 실제 값의 인덱스가 오픈플로우 스위치에 이미 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자인 경우, 오픈플로우 스위치에 의한 필드의 실제 값에 대한 인덱싱의 방식은 크게 단순화될 수 있을 뿐만 아니라, 오픈플로우 스위치에 의한 필드의 실제 값에 대한 인덱싱의 효율은 개선될 수 있다는 점이 이해될 수 있다. 또한, 플로우 테이블 엔트리 식별자는 일반적으로 비교적 작은 데이터 볼륨을 갖는데, 이는 소프트웨어 정의 네트워크 제어기(1100)가 전달된 제1 플로우 테이블 엔트리의 데이터 볼륨을 비교적 바람직하게 제어하는 것을 돕는다.
본 발명의 일부 구현 방식들에서, 제1 플로우 테이블 엔트리에서의 제2 필드 세트의 각각의 필드는 이 필드의 다수의 실제 값을 추가로 반송할 수 있다. 제2 필드 세트는 M개의 필드를 포함하고, M은 양의 정수이다. 필드들의 실제 값들의 예들은 위에서 설명되어 있다. 제2 필드 세트에서의 각각의 필드가 이 필드의 다수의 실제 값을 추가로 반송할 수 있기 때문에, 그것은 제1 플로우 테이블 엔트리가 다수의 플로우 테이블 엔트리로 분할될 수 있다는 것을 등가적으로 표시하며, 이는 또한 소프트웨어 정의 네트워크 제어기(1200)가 전달된 제1 플로우 테이블 엔트리의 데이터 볼륨을 비교적 바람직하게 제어하는 것을 돕는다는 점이 이해될 수 있다.
본 발명의 실시예들에서의 M은 예를 들어 1, 2, 5, 8, 10 또는 다른 값과 동일할 수 있다.
제1 플로우 테이블 엔트리에서의 제2 필드 세트에 포함된 M개의 필드는, 제1 플로우 테이블 엔트리에 있으며 제1 필드 세트에서의 임의의 필드와는 상이한 임의의 M개의 필드일 수 있다. 제2 필드 세트에 포함된 M개의 필드는 제1 플로우 테이블 엔트리에서의 인접한 M개의 필드, 부분적으로 인접한 M개의 필드 또는 인접하지 않은 M개의 필드일 수 있다. M개의 필드는 예를 들어 다음의 필드들: 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드, 프로토콜 필드 등 중 적어도 하나를 포함할 수 있다.
제2 필드 세트와 제1 필드 세트의 교집합은 공집합이다.
이 실시예에서의 소프트웨어 정의 네트워크 제어기(1200)의 기능 모듈들의 기능들은 전술한 방법 실시예에서의 방법에 따라 구체적으로 구현될 수 있다는 점이 이해될 수 있다. 기능들의 특정 구현 프로세스들에 대해, 전술한 방법 실시예의 관련 설명에 대한 참조가 이루어질 수 있고, 상세내용들은 여기서 더 이상 설명되지 않는다.
도 13을 참조하면, 도 13은 본 발명의 실시예에 따른 오픈플로우 스위치(1300)의 개략도이다. 오픈플로우 스위치(1300)는 적어도 하나의 버스(1301), 버스(1301)에 접속된 적어도 하나의 프로세서(1302) 및 버스(1301)에 접속된 적어도 하나의 메모리(1303)를 포함할 수 있다.
프로세서(1302)는, 버스(1301)를 이용함으로써, 메모리(1303)에 저장된 코드를 인보크하여, 제1 플로우 테이블 엔트리를 반송하는 오픈플로우 프로토콜 메시지를 수신하고 - 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송할 수 있고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -; 제1 필드 세트에서의 실제 값의 인덱스에 기초하여 제1 필드 세트에서의 실제 값을 획득하고; 제1 필드 세트에서의 실제 값의 것이며 제1 플로우 테이블 엔트리에서의 제1 필드 세트에서 반송되는 인덱스를 제1 필드 세트에서의 실제 값으로 대체한다.
제1 플로우 테이블 엔트리를 반송하는 오픈플로우 프로토콜 메시지는 예를 들어 flow_mod 메시지 또는 다른 오픈플로우 프로토콜 메시지일 수 있다.
제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 임의의 N개의 필드일 수 있다. 제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 인접한 N개의 필드, 부분적으로 인접한 N개의 필드 또는 인접하지 않은 N개의 필드일 수 있다. N개의 필드는 예를 들어 다음의 필드들: 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드, 프로토콜 필드 등 중 적어도 하나를 포함할 수 있다.
인덱스가 오픈플로우 스위치에 이미 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자인 경우, 제1 필드 세트에서의 실제 값의 인덱스에 기초하여 제1 필드 세트에서의 실제 값을 획득하는 것은, 플로우 테이블 엔트리 식별자에 기초하여, 플로우 테이블 엔트리 식별자에 의해 표현된 플로우 테이블 엔트리에 있으며 제1 필드 세트와 동일한 프로토콜 타입을 갖는 제3 필드 세트에 채워진 실제 값을 획득하는 것을 포함할 수 있고, 제3 필드 세트 및 제1 필드 세트에 있으며 동일한 프로토콜 타입을 갖는 필드들은 동일한 실제 값을 갖는다. 제3 필드 세트 및 제1 필드 세트는 동일한 수량의 필드들을 갖고, 제3 필드 세트 및 제1 필드 세트에 포함된 필드들의 프로토콜 타입들은 일대일 대응관계에 있다는 점이 이해될 수 있다.
또한, 메모리(1303)는, 제1 필드 세트의 실제 값의 것이며 제1 필드 세트에서 반송되는 인덱스가 제1 필드 세트의 실제 값으로 대체된 이후에 획득되는 제1 플로우 테이블 엔트리를 추가로 저장할 수 있는데, 즉 획득된 실제 값이 제1 필드 세트에 채워진 이후에 획득되는 제1 플로우 테이블 엔트리를 저장할 수 있다.
본 발명의 일부 실시예들에서, 프로세서(1302)는 저장된 제1 플로우 테이블 엔트리 또는 제1 플로우 테이블 엔트리의 식별자를 SDN 제어기로 추가로 송신하여, 오픈플로우 스위치와 SDN 제어기 사이의 저장된 플로우 테이블 엔트리의 동기화를 용이하게 할 수 있다.
본 발명의 일부 실시예들에서, 프로세서(1302)는, 제1 플로우 테이블 엔트리가 수신되기 이전에, 제1 패킷 또는 제1 패킷의 패킷 헤더를 SDN 제어기로 송신하도록 추가로 구성될 수 있다. 제1 플로우 테이블 엔트리의 명령어 필드는 제1 패킷을 처리하는데 이용되는 라우팅 명령어 세트 또는 라우팅 명령어 세트의 인덱스를 반송한다. 프로세서(1302)는 라우팅 명령어 세트에 기초하여 제1 패킷을 처리하도록 추가로 구성될 수 있다.
이 실시예에서의 오픈플로우 스위치(1300)의 기능 모듈들의 기능들은 전술한 방법 실시예에서의 방법에 따라 구체적으로 구현될 수 있다는 점이 이해될 수 있다. 기능들의 특정 구현 프로세스들에 대해, 전술한 방법 실시예의 관련 설명에 대한 참조가 이루어질 수 있고, 상세내용들은 여기서 더 이상 설명되지 않는다.
이 실시예에서, SDN 제어기에 의해 오픈플로우 스위치(1300)로 송신된 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에 대해, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값을 반송하는 대신에 제1 필드 세트에서의 실제 값의 인덱스를 반송한다는 것을 알 수 있다. 기술적 구현에서, 필드의 실제 값의 인덱스의 데이터 볼륨은 일반적으로 이 필드의 실제 값의 데이터 볼륨보다 더 작거나 심지어는 훨씬 더 작다. 그러므로, 이 실시예에서 플로우 테이블 엔트리를 전달하는 메커니즘은 SDN 제어기와 오픈플로우 스위치 사이의 제어 채널의 오버헤드를 감소시키는 것을 돕고, 그에 의해 제어 채널의 정체 위험을 감소시키고, 또한 스위칭 디바이스의 네트워크 리소스들의 소모를 감소시키는 것을 돕고, 복잡한 네트워킹의 요건을 충족시키는 것을 돕는다.
도 14를 참조하면, 도 14는 본 발명의 다른 실시예에 따른 오픈플로우 스위치(1400)의 구조적인 블록도이다.
오픈플로우 스위치(1400)는 적어도 하나의 프로세서(1401), 적어도 하나의 네트워크 인터페이스(1404) 또는 다른 사용자 인터페이스(1403), 메모리(1405) 및 적어도 하나의 통신 버스(1402)를 포함할 수 있다. 통신 버스(1402)는 이러한 컴포넌트들 사이의 접속 및 통신을 구현하도록 구성된다. 오픈플로우 스위치(1400)는 선택적으로 사용자 인터페이스(1403)를 포함하는데, 이 사용자 인터페이스는 디스플레이(예를 들어, 터치 스크린, LCD, CRT, 홀로그래픽 또는 프로젝터), 클릭 디바이스(예를 들어, 마우스, 트랙볼, 터치 패드 또는 터치 스크린), 및 카메라 및/또는 사운드 픽업 장치 등을 포함한다.
메모리(1402)는 예를 들어 판독 전용 메모리 및 랜덤 액세스 메모리를 포함하고, 프로세서(1401)에 명령어 및 데이터를 제공할 수 있다.
메모리(1402)에서의 일부는 비휘발성 메모리(NVRAM)를 더 포함한다.
일부 구현 방식들에서, 메모리(1405)는 다음의 요소들, 실행가능한 모듈 또는 데이터 구조, 또는 그것의 서브세트, 또는 그것의 확장 세트를 저장한다:
다양한 기본 서비스들을 구현하고 하드웨어 기반 태스크들을 처리하도록 구성된, 다양한 시스템 프로그램들을 포함하는 운영 체제(14051); 및
다양한 애플리케이션 프로그램들을 포함하고, 다양한 애플리케이션 서비스들을 구현하는데 이용되는 애플리케이션 프로그램 모듈(14052).
본 발명의 이 실시예에서, 메모리(1405)에 저장된 명령어 또는 프로그램들을 인보크함으로써, 프로세서(1401)는 제1 플로우 테이블 엔트리를 반송하는 오픈플로우 프로토콜 메시지를 수신하고 - 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송할 수 있고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -; 제1 필드 세트에서의 실제 값의 인덱스에 기초하여 제1 필드 세트에서의 실제 값을 획득하고; 제1 필드 세트에서의 실제 값의 것이며 제1 플로우 테이블 엔트리에서의 제1 필드 세트에서 반송되는 인덱스를 제1 필드 세트에서의 실제 값으로 대체한다.
제1 플로우 테이블 엔트리를 반송하는 오픈플로우 프로토콜 메시지는 예를 들어 flow_mod 메시지 또는 다른 오픈플로우 프로토콜 메시지일 수 있다.
제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 임의의 N개의 필드일 수 있다. 제1 필드 세트에 포함된 N개의 필드는 제1 플로우 테이블 엔트리에서의 인접한 N개의 필드, 부분적으로 인접한 N개의 필드 또는 인접하지 않은 N개의 필드일 수 있다. N개의 필드는 예를 들어 다음의 필드들: 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드, 프로토콜 필드 등 중 적어도 하나를 포함할 수 있다.
인덱스가 오픈플로우 스위치에 이미 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자인 경우, 제1 필드 세트에서의 실제 값의 인덱스에 기초하여 제1 필드 세트에서의 실제 값을 획득하는 것은, 플로우 테이블 엔트리 식별자에 기초하여, 플로우 테이블 엔트리 식별자에 의해 표현된 플로우 테이블 엔트리에 있으며 제1 필드 세트와 동일한 프로토콜 타입을 갖는 제3 필드 세트에 채워진 실제 값을 획득하는 것을 포함할 수 있고, 제3 필드 세트 및 제1 필드 세트에 있으며 동일한 프로토콜 타입을 갖는 필드들은 동일한 실제 값을 갖는다. 제3 필드 세트 및 제1 필드 세트는 동일한 수량의 필드들을 갖고, 제3 필드 세트 및 제1 필드 세트에 포함된 필드들의 프로토콜 타입들은 일대일 대응관계에 있다는 점이 이해될 수 있다.
또한, 메모리(1402)는, 제1 필드 세트의 실제 값의 것이며 제1 필드 세트에서 반송되는 인덱스가 제1 필드 세트의 실제 값으로 대체된 이후에 획득되는 제1 플로우 테이블 엔트리를 추가로 저장할 수 있는데, 즉 획득된 실제 값이 제1 필드 세트에 채워진 이후에 획득되는 제1 플로우 테이블 엔트리를 저장할 수 있다.
본 발명의 일부 실시예들에서, 프로세서(1401)는 저장된 제1 플로우 테이블 엔트리 또는 제1 플로우 테이블 엔트리의 식별자를 SDN 제어기로 추가로 송신하여, 오픈플로우 스위치와 SDN 제어기 사이의 저장된 플로우 테이블 엔트리의 동기화를 용이하게 할 수 있다.
본 발명의 일부 실시예들에서, 프로세서(1401)는, 제1 플로우 테이블 엔트리가 수신되기 이전에, 제1 패킷 또는 제1 패킷의 패킷 헤더를 SDN 제어기로 송신하도록 추가로 구성될 수 있다. 제1 플로우 테이블 엔트리의 명령어 필드는 제1 패킷을 처리하는데 이용되는 라우팅 명령어 세트 또는 라우팅 명령어 세트의 인덱스를 반송한다. 프로세서(1401)는 라우팅 명령어 세트에 기초하여 제1 패킷을 처리하도록 추가로 구성될 수 있다.
이 실시예에서의 오픈플로우 스위치(1400)의 기능 모듈들의 기능들은 전술한 방법 실시예에서의 방법에 따라 구체적으로 구현될 수 있다는 점이 이해될 수 있다. 기능들의 특정 구현 프로세스들에 대해, 전술한 방법 실시예의 관련 설명에 대한 참조가 이루어질 수 있고, 상세내용들은 여기서 더 이상 설명되지 않는다.
도 15를 참조하면, 도 15는 본 발명의 실시예에 따른 가상 계층 디바이스(1500)의 개략도이다. 가상 계층 디바이스(1500)는 적어도 하나의 버스(1501), 버스(1501)에 접속된 적어도 하나의 프로세서(1502) 및 버스(1501)에 접속된 적어도 하나의 메모리(1503)를 포함할 수 있다.
프로세서(1502)는, 버스(1501)를 이용함으로써, 메모리(1503)에 저장된 코드를 인보크하여, 제1 SDN 제어기로부터 제1 오픈플로우 프로토콜 메시지를 수신하고 - 제1 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 제1 플로우 테이블 엔트리에서의 제1 필드는 제1 필드에서의 실제 값의 인덱스를 반송함 -; 제2 SDN 제어기로부터 제2 오픈플로우(OpenFlow) 프로토콜 메시지를 수신하고 - 제2 오픈플로우 프로토콜 메시지는 제2 플로우 테이블 엔트리를 반송하고, 제2 플로우 테이블 엔트리에서의 제4 필드는 제4 필드에서의 실제 값의 인덱스를 반송함 -; 제1 플로우 테이블 엔트리와 제2 플로우 테이블 엔트리를 제3 플로우 테이블 엔트리로 결합하고; 제3 플로우 테이블 엔트리를 반송하는 제3 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신한다.
소위 다수의 플로우 테이블 엔트리를 결합하는 것은 주로 다수의 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드들에 채워진 데이터를 결합하는 것을 지칭한다. 예를 들어, 제2 플로우 테이블 엔트리 및 제2 플로우 테이블 엔트리 양쪽 모두가 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드 및 다른 프로토콜 타입의 필드를 포함한다고 가정하면, 가상 계층 디바이스는 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 포트 번호 필드들에 채워진 데이터를 결합하고, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 소스 IP 어드레스 필드들에 채워진 데이터를 결합하고, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 목적지 MAC 어드레스 필드들에 채워진 데이터를 결합하고, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 목적지 IP 어드레스 필드들에 채워진 데이터를 결합하고, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 가상 로컬 영역 네트워크 식별자 필드들에 채워진 데이터를 결합하고, 그리고/또는 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 소스 MAC 어드레스 필드들에 채워진 데이터를 결합할 수 있고, 다른 프로토콜 타입의 필드들에 채워진 데이터를 결합하는 방식은 그에 따라 추론될 수 있다.
이 실시예에서의 가상 계층 디바이스(1500)의 기능 모듈들의 기능들은 전술한 방법 실시예에서의 방법에 따라 구체적으로 구현될 수 있다는 점이 이해될 수 있다. 기능들의 특정 구현 프로세스들에 대해, 전술한 방법 실시예의 관련 설명에 대한 참조가 이루어질 수 있고, 상세내용들은 여기서 더 이상 설명되지 않는다.
이 실시예에서, SDN 제어기에 의해 오픈플로우 스위치로 송신된 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에 대해, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값을 반송하는 대신에 제1 필드 세트에서의 실제 값의 인덱스를 반송한다는 것을 알 수 있다. 기술적 구현에서, 필드의 실제 값의 인덱스의 데이터 볼륨은 일반적으로 이 필드의 실제 값의 데이터 볼륨보다 더 작거나 심지어는 훨씬 더 작다. 그러므로, 이 실시예에서 플로우 테이블 엔트리를 전달하는 메커니즘은 SDN 제어기와 오픈플로우 스위치 사이의 제어 채널의 오버헤드를 감소시키는 것을 돕고, 그에 의해 제어 채널의 정체 위험을 감소시키고, 또한 스위칭 디바이스의 네트워크 리소스들의 소모를 감소시키는 것을 돕고, 복잡한 네트워킹의 요건을 충족시키는 것을 돕는다. 또한, SDN 제어기와 오픈플로우 스위치 사이의 가상 계층 디바이스(1500)는 수개의 플로우 테이블 엔트리를 추가로 결합할 수 있다. 이러한 방식으로, 전송되는 플로우 테이블 엔트리들의 데이터 볼륨이 추가로 감소된다.
도 16을 참조하면, 도 16은 본 발명의 다른 실시예에 따른 가상 계층 디바이스(1600)의 구조적인 블록도이다.
가상 계층 디바이스(1600)는 적어도 하나의 프로세서(1601), 적어도 하나의 네트워크 인터페이스(1604) 또는 다른 사용자 인터페이스(1603), 메모리(1605) 및 적어도 하나의 통신 버스(1602)를 포함할 수 있다. 통신 버스(1602)는 이러한 컴포넌트들 사이의 접속 및 통신을 구현하도록 구성된다. 가상 계층 디바이스(1600)는 선택적으로 사용자 인터페이스(1603)를 포함하는데, 이 사용자 인터페이스는 디스플레이(디스플레이는 예를 들어 터치 스크린, LCD, CRT, 홀로그래픽 또는 프로젝터임), 클릭 디바이스(예를 들어, 마우스, 트랙볼, 터치 패드 또는 터치 스크린), 및 카메라 및/또는 사운드 픽업 장치 등을 포함한다.
메모리(1602)는 예를 들어 판독 전용 메모리 및 랜덤 액세스 메모리를 포함하고, 프로세서(1601)에 명령어 및 데이터를 제공할 수 있다.
메모리(1602)에서의 일부는 비휘발성 메모리(NVRAM)를 더 포함한다.
일부 구현 방식들에서, 스토리지(1605)는 다음의 요소들, 실행가능한 모듈 또는 데이터 구조, 또는 그것의 서브세트, 또는 그것의 확장 세트를 저장한다:
다양한 기본 서비스들을 구현하고 하드웨어 기반 태스크들을 처리하도록 구성된, 다양한 시스템 프로그램들을 포함하는 운영 체제(16051); 및
다양한 애플리케이션 프로그램들을 포함하고, 다양한 애플리케이션 서비스들을 구현하는데 이용되는 애플리케이션 프로그램 모듈(16052).
본 발명의 이 실시예에서, 메모리(1605)에 저장된 명령어 또는 프로그램들을 인보크함으로써, 프로세서(1601)는 제1 SDN 제어기로부터 제1 오픈플로우 프로토콜 메시지를 수신하고 - 제1 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 제1 플로우 테이블 엔트리에서의 제1 필드는 제1 필드의 실제 값의 인덱스를 반송함 -; 제2 SDN 제어기로부터 제2 오픈플로우(OpenFlow) 프로토콜 메시지를 수신하고 - 제2 오픈플로우 프로토콜 메시지는 제2 플로우 테이블 엔트리를 반송하고, 제2 플로우 테이블 엔트리에서의 제4 필드는 제4 필드에서의 실제 값의 인덱스를 반송함 -; 제1 플로우 테이블 엔트리와 제2 플로우 테이블 엔트리를 제3 플로우 테이블 엔트리로 결합하고; 제3 플로우 테이블 엔트리를 반송하는 제3 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신한다.
소위 다수의 플로우 테이블 엔트리를 결합하는 것은 주로 다수의 플로우 테이블 엔트리에서의 동일한 프로토콜 타입의 필드들에 채워진 데이터를 결합하는 것을 지칭한다. 예를 들어, 제2 플로우 테이블 엔트리 및 제2 플로우 테이블 엔트리 양쪽 모두가 포트 번호 필드, 소스 IP 어드레스 필드, 목적지 IP 어드레스 필드, 목적지 MAC 어드레스 필드, 가상 로컬 영역 네트워크 식별자 필드, 소스 MAC 어드레스 필드 및 다른 프로토콜 타입의 필드를 포함한다고 가정하면, 가상 계층 디바이스는 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 포트 번호 필드들에 채워진 데이터를 결합하고, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 소스 IP 어드레스 필드들에 채워진 데이터를 결합하고, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 목적지 MAC 어드레스 필드들에 채워진 데이터를 결합하고, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 목적지 IP 어드레스 필드들에 채워진 데이터를 결합하고, 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 가상 로컬 영역 네트워크 식별자 필드들에 채워진 데이터를 결합하고, 그리고/또는 제2 플로우 테이블 엔트리와 제1 플로우 테이블 엔트리의 소스 MAC 어드레스 필드들에 채워진 데이터를 결합할 수 있고, 다른 프로토콜 타입의 필드들에 채워진 데이터를 결합하는 방식은 그에 따라 추론될 수 있다.
이 실시예에서의 가상 계층 디바이스(1600)의 기능 모듈들의 기능들은 전술한 방법 실시예에서의 방법에 따라 구체적으로 구현될 수 있다는 점이 이해될 수 있다. 기능들의 특정 구현 프로세스들에 대해, 전술한 방법 실시예의 관련 설명에 대한 참조가 이루어질 수 있고, 상세내용들은 여기서 더 이상 설명되지 않는다.
도 17을 참조하면, 본 발명의 실시예는 소프트웨어 정의 네트워크 제어기(1710)와 오픈플로우 스위치(1720)를 포함할 수 있는 통신 시스템을 추가로 제공한다.
소프트웨어 정의 네트워크 제어기(1710)는 제1 플로우 테이블 엔트리를 생성하고 - 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -; 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하도록 구성되고, 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송한다.
오픈플로우 스위치(1720)는 오픈플로우 프로토콜 메시지를 수신하고; 제1 필드 세트에서의 실제 값의 인덱스에 기초하여 제1 필드 세트에서의 실제 값을 획득하고; 제1 필드 세트에서의 실제 값의 것이며 제1 플로우 테이블 엔트리에서의 제1 필드 세트에서 반송되는 인덱스를 제1 필드 세트에서의 실제 값으로 대체하도록 구성된다.
이 실시예에서의 소프트웨어 정의 네트워크 제어기(1710)는 전술한 실시예에서 설명된 소프트웨어 정의 네트워크 제어기들의 일부 또는 전부를 가질 수 있다는 점이 이해될 수 있다. 오픈플로우 스위치(1720)는 전술한 실시예에서 설명된 오픈플로우 스위치들의 일부 또는 전부를 가질 수 있다. 소프트웨어 정의 네트워크 제어기(1710) 및 오픈플로우 스위치(1720)의 기능 모듈들의 기능들은 전술한 방법 실시예에서의 방법에 따라 구체적으로 구현될 수 있다. 기능들의 특정 구현 프로세스들에 대해, 전술한 방법 실시예의 관련 설명에 대한 참조가 이루어질 수 있고, 상세내용들은 여기서 더 이상 설명되지 않는다.
또한, 통신 시스템은 다른 오픈플로우 스위치(1730)를 더 포함할 수 있다.
이 실시예에서, 소프트웨어 정의 네트워크 제어기(1710)에 의해 오픈플로우 스위치(1720)로 송신된 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에 대해, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값을 반송하는 대신에 제1 필드 세트에서의 실제 값의 인덱스를 반송한다는 것을 알 수 있다. 기술적 구현에서, 필드의 실제 값의 인덱스의 데이터 볼륨은 일반적으로 이 필드의 실제 값의 데이터 볼륨보다 더 작거나 심지어는 훨씬 더 작다. 그러므로, 이 실시예에서 플로우 테이블 엔트리를 전달하는 메커니즘은 소프트웨어 정의 네트워크 제어기(1710)와 오픈플로우 스위치 사이의 제어 채널의 오버헤드를 감소시키는 것을 돕고, 그에 의해 제어 채널의 정체 위험을 감소시키고, 또한 오픈플로우 스위치의 네트워크 리소스들의 소모를 감소시키는 것을 돕고, 복잡한 네트워킹의 요건을 충족시키는 것을 돕는다.
도 18을 참조하면, 본 발명의 실시예는 다른 통신 시스템을 추가로 제공하는데, 이 통신 시스템은 제1 소프트웨어 정의 네트워크 제어기(1810), 제2 소프트웨어 정의 네트워크 제어기(1820), 가상 계층 디바이스(1830) 및 오픈플로우 스위치(1840)를 포함할 수 있다.
제1 소프트웨어 정의 네트워크 제어기(1810)는 제1 오픈플로우(OpenFlow) 프로토콜 메시지를 송신하도록 구성되고, 제1 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 제1 플로우 테이블 엔트리에서의 제1 필드는 제1 필드에서의 실제 값의 인덱스를 반송한다.
제2 소프트웨어 정의 네트워크 제어기(1820)는 제2 오픈플로우 프로토콜 메시지를 송신하도록 구성되고, 제2 오픈플로우 프로토콜 메시지는 제2 플로우 테이블 엔트리를 반송하고, 제2 플로우 테이블 엔트리에서의 제4 필드는 제4 필드에서의 실제 값의 인덱스를 반송한다.
가상 계층 디바이스(1830)는 제1 소프트웨어 정의 네트워크 제어기(1810)로부터 제1 오픈플로우 프로토콜 메시지를 수신하고; 제2 소프트웨어 정의 네트워크 제어기(1820)로부터 제2 오픈플로우 프로토콜 메시지를 수신하고; 제1 플로우 테이블 엔트리와 제2 플로우 테이블 엔트리를 제3 플로우 테이블 엔트리로 결합하고; 제3 플로우 테이블 엔트리를 반송하는 제3 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하도록 구성된다.
오픈플로우 스위치(1840)는 제3 오픈플로우 프로토콜 메시지를 수신하고; 제3 오픈플로우 프로토콜 메시지에서 반송되는 제3 플로우 테이블 엔트리를 제1 플로우 테이블 엔트리 및 제2 플로우 테이블 엔트리로 분할하고; 제1 필드의 실제 값의 인덱스에 기초하여 제1 필드의 실제 값을 획득하고; 제4 필드의 실제 값의 인덱스에 기초하여 제4 필드의 실제 값을 획득하고; 제1 필드에서의 실제 값의 것이며 제1 플로우 테이블 엔트리에서의 제1 필드에서 반송되는 인덱스를 제1 필드에서의 실제 값으로 대체하고; 제4 필드의 실제 값의 것이며 제2 플로우 테이블 엔트리에서의 제4 필드에서 반송되는 인덱스를 제4 필드의 실제 값으로 대체하도록 구성된다.
이 실시예에서의 소프트웨어 정의 네트워크 제어기는 전술한 실시예에서 설명된 소프트웨어 정의 네트워크 제어기들의 일부 또는 전부를 가질 수 있다는 점이 이해될 수 있다. 오픈플로우 스위치(1840)는 전술한 실시예에서 설명된 오픈플로우 스위치들의 일부 또는 전부를 가질 수 있다. 가상 계층 디바이스(1830)는 전술한 실시예에서 설명된 가상 계층 디바이스들의 일부 또는 전부를 가질 수 있다. 소프트웨어 정의 네트워크 제어기, 오픈플로우 스위치(1840) 및 가상 계층 디바이스(1830)의 기능 모듈들의 기능들은 전술한 방법 실시예에서의 방법에 따라 구체적으로 구현될 수 있다. 기능들의 특정 구현 프로세스들에 대해, 전술한 방법 실시예의 관련 설명에 대한 참조가 이루어질 수 있고, 상세내용들은 여기서 더 이상 설명되지 않는다.
또한, 통신 시스템은 다른 오픈플로우 스위치(1850)를 더 포함할 수 있다.
이 실시예에서, SDN 제어기에 의해 오픈플로우 스위치로 송신된 오픈플로우 프로토콜 메시지에서 반송되는 제1 플로우 테이블 엔트리에 대해, 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 제1 필드 세트에서의 실제 값을 반송하는 대신에 제1 필드 세트에서의 실제 값의 인덱스를 반송한다는 것을 알 수 있다. 기술적 구현에서, 필드의 실제 값의 인덱스의 데이터 볼륨은 일반적으로 이 필드의 실제 값의 데이터 볼륨보다 더 작거나 심지어는 훨씬 더 작다. 그러므로, 이 실시예에서 플로우 테이블 엔트리를 전달하는 메커니즘은 SDN 제어기와 오픈플로우 스위치 사이의 제어 채널의 오버헤드를 감소시키는 것을 돕고, 그에 의해 제어 채널의 정체 위험을 감소시키고, 또한 스위칭 디바이스의 네트워크 리소스들의 소모를 감소시키는 것을 돕고, 복잡한 네트워킹의 요건을 충족시키는 것을 돕는다. 또한, SDN 제어기와 오픈플로우 스위치 사이의 가상 계층 디바이스는 수개의 플로우 테이블 엔트리를 추가로 결합할 수 있다. 이러한 방식으로, 전송되는 플로우 테이블 엔트리들의 데이터 볼륨이 추가로 감소된다.
본 설명을 간단하게 하기 위해서, 전술한 방법 실시예들은 일련의 액션들로서 표현된다는 점에 유의해야 한다. 그러나, 본 기술분야의 통상의 기술자라면, 본 발명이 설명된 액션 시퀀스로 제한되지는 않는데, 그 이유는 본 발명에 따르면 일부 단계들이 다른 시퀀스들로 수행되거나 동시에 수행될 수도 있기 때문이라는 점을 인식해야 한다. 추가로, 본 기술분야의 통상의 기술자라면, 본 명세서에 설명된 모든 실시예들은 예시적인 실시예들이며, 관련 액션들 및 모듈들은 반드시 본 발명에 필수적인 것은 아니라는 점을 또한 인식해야 한다.
전술한 실시예들에서, 각각의 실시예의 설명은 각각의 포커스들을 갖는다. 실시예에서 상세하게 설명되지 않은 부분에 대해, 다른 실시예들에서의 관련 설명들에 대한 참조가 이루어질 수 있다.
본 출원에서 제공된 수개의 실시예에서, 개시된 장치는 다른 방식들로 구현될 수 있다는 점이 이해되어야 한다. 예를 들어, 설명된 장치 실시예는 예시적일 뿐이다. 예를 들어, 유닛 분할은 논리적 기능 분할일 뿐이며, 실제 구현에서는 다른 분할일 수 있다. 예를 들어, 복수의 유닛 또는 컴포넌트는 다른 시스템으로 통합 또는 결합될 수 있거나, 또는 일부 피처들은 무시되거나 수행되지 않을 수 있다. 추가로, 디스플레이되거나 논의된 상호 결합 또는 직접 결합 또는 통신 접속은 일부 인터페이스들을 통해 구현될 수 있다. 장치들 또는 유닛들 사이의 간접 결합 또는 통신 접속은 전자적 또는 다른 형태로 구현될 수 있다.
별개의 부분들로서 설명된 유닛들은 물리적으로 분리될 수도 있고 물리적으로 분리되지 않을 수도 있고, 유닛들로서 디스플레이된 부분들은 물리적 유닛들일 수도 있고 물리적 유닛들이 아닐 수도 있고, 하나의 위치에 위치될 수도 있고 복수의 네트워크 유닛 상에 분산될 수도 있다. 유닛들의 일부 또는 전부는 실시예들의 해결책들의 목적들을 달성하기 위해 실제 요구에 따라 선택될 수 있다.
추가로, 본 발명의 실시예들에서의 기능 유닛들은 하나의 처리 유닛으로 통합될 수 있거나, 또는 유닛들 각각은 물리적으로 단독으로 존재할 수 있거나, 또는 2개 이상의 유닛은 하나의 유닛으로 통합된다. 통합된 유닛은 하드웨어의 형태로 구현될 수도 있고, 또는 소프트웨어 기능 유닛의 형태로 구현될 수도 있다.
통합된 유닛이 소프트웨어 기능 유닛의 형태로 구현되고, 독립적인 제품으로서 판매되거나 이용될 때, 통합된 유닛은 컴퓨터 판독가능 저장 매체에 저장될 수 있다. 이러한 이해에 기초하여, 본 발명의 기술적 해결책들은 본질적으로, 또는 종래 기술에 기여하는 부분은, 또는 기술적 해결책들의 전부 또는 일부는 소프트웨어 제품의 형태로 구현될 수 있다. 소프트웨어 제품은 저장 매체에 저장되고, 본 발명의 실시예들에 설명된 방법들의 단계들의 전부 또는 일부를 수행하도록 컴퓨터 디바이스(퍼스널 컴퓨터, 서버 또는 네트워크 디바이스일 수 있음)에 명령하기 위한 수개의 명령어를 포함한다. 전술한 저장 매체는, USB 플래시 드라이브, 판독 전용 메모리(ROM, Read-Only Memory), 랜덤 액세스 메모리(RAM, Random Access Memory), 착탈식 하드 디스크, 자기 디스크 또는 광학 디스크와 같이, 프로그램 코드를 저장할 수 있는 임의의 매체를 포함한다.
전술한 실시예들은 본 발명의 기술적 해결책들을 설명하기 위해 의도될 뿐이며, 본 발명을 제한하기 위해 의도되지는 않는다. 본 발명은 전술한 실시예들을 참조하여 상세하게 설명되지만, 본 기술분야의 통상의 기술자라면, 본 발명의 실시예들의 기술적 해결책들의 사상 및 범위로부터 벗어나지 않으면서, 여전히 전술한 실시예들에 설명된 기술적 해결책들에 대해 수정을 행하거나 그것의 일부 기술적 피처들에 대해 등가의 대체들을 행할 수 있다는 점을 이해해야 한다.

Claims (20)

  1. 플로우 테이블 관리 방법으로서,
    소프트웨어 정의 네트워크 제어기(software defined network controller)에 의해, 제1 플로우 테이블 엔트리를 생성하는 단계 - 상기 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 상기 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 상기 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -; 및
    상기 소프트웨어 정의 네트워크 제어기에 의해, 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하는 단계 - 상기 오픈플로우 프로토콜 메시지는 상기 제1 플로우 테이블 엔트리를 반송함 -
    를 포함하는 플로우 테이블 관리 방법.
  2. 제1항에 있어서,
    상기 인덱스는 상기 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자인, 플로우 테이블 관리 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 제1 플로우 테이블 엔트리에서의 제2 필드 세트의 각각의 필드는 다수의 실제 값을 반송하고, 상기 제2 필드 세트는 M개의 필드를 포함하고, M은 양의 정수인, 플로우 테이블 관리 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 제1 플로우 테이블 엔트리를 생성하는 단계 이전에, 상기 소프트웨어 정의 네트워크 제어기에 의해, 스위치로부터 제1 패킷 또는 제1 패킷의 패킷 헤더를 수신하고, 미리 설정된 처리 정책에 따라, 상기 제1 패킷을 처리하는데 이용되는 라우팅 명령어 세트를 결정하는 단계를 더 포함하고, 상기 제1 플로우 테이블 엔트리의 명령어 필드가 상기 라우팅 명령어 세트 또는 상기 라우팅 명령어 세트의 인덱스를 반송하는, 플로우 테이블 관리 방법.
  5. 플로우 테이블 관리 방법으로서,
    오픈플로우 스위치에 의해, 오픈플로우 프로토콜 메시지를 수신하는 단계 - 상기 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 상기 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 상기 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 상기 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -;
    상기 오픈플로우 스위치에 의해, 상기 제1 필드 세트에서의 상기 실제 값의 인덱스에 기초하여 상기 제1 필드 세트에서의 상기 실제 값을 획득하는 단계; 및
    상기 오픈플로우 스위치에 의해, 상기 제1 필드 세트에서의 상기 실제 값의 것이며 상기 제1 플로우 테이블 엔트리에서의 상기 제1 필드 세트에서 반송되는 상기 인덱스를 상기 제1 필드 세트에서의 상기 실제 값으로 대체하는 단계
    를 포함하는 플로우 테이블 관리 방법.
  6. 제5항에 있어서,
    상기 인덱스는 상기 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자이고, 상기 제1 필드 세트에서의 상기 인덱스에 기초하여 상기 제1 필드 세트에서의 상기 실제 값을 획득하는 단계는, 상기 플로우 테이블 엔트리 식별자에 기초하여, 상기 플로우 테이블 엔트리 식별자에 의해 표현된 상기 플로우 테이블 엔트리에 있으며 상기 제1 필드 세트와 동일한 프로토콜 타입을 갖는 제3 필드 세트에 채워진 실제 값을 획득하는 단계를 포함하고, 상기 제3 필드 세트 및 상기 제1 필드 세트에 있으며 동일한 프로토콜 타입을 갖는 필드들은 동일한 실제 값을 갖는, 플로우 테이블 관리 방법.
  7. 제5항 또는 제6항에 있어서,
    상기 방법은, 상기 오픈플로우 스위치에 의해, 저장된 상기 제1 플로우 테이블 엔트리 또는 상기 제1 플로우 테이블 엔트리의 식별자를 소프트웨어 정의 네트워크 제어기로 송신하는 단계를 더 포함하는 플로우 테이블 관리 방법.
  8. 제5항 내지 제7항 중 어느 한 항에 있어서,
    상기 오픈플로우 스위치가 상기 제1 플로우 테이블 엔트리를 수신하기 이전에, 상기 오픈플로우 스위치에 의해, 제1 패킷 또는 제1 패킷의 패킷 헤더를 상기 소프트웨어 정의 네트워크 제어기로 송신하는 단계를 더 포함하고,
    상기 제1 플로우 테이블 엔트리의 명령어 필드는 상기 제1 패킷을 처리하는데 이용되는 라우팅 명령어 세트 또는 라우팅 명령어 세트의 인덱스를 반송하고,
    상기 방법은, 상기 오픈플로우 스위치에 의해, 상기 라우팅 명령어 세트에 기초하여 상기 제1 패킷을 처리하는 단계를 더 포함하는 플로우 테이블 관리 방법.
  9. 플로우 테이블 중계 방법으로서,
    가상 계층 디바이스에 의해, 제1 소프트웨어 정의 네트워크 제어기로부터 제1 오픈플로우 프로토콜 메시지를 수신하는 단계 - 상기 제1 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 상기 제1 플로우 테이블 엔트리에서의 제1 필드는 상기 제1 필드에서의 실제 값의 인덱스를 반송함 -;
    상기 가상 계층 디바이스에 의해, 제2 소프트웨어 정의 네트워크 제어기로부터 제2 오픈플로우 프로토콜 메시지를 수신하는 단계 - 상기 제2 오픈플로우 프로토콜 메시지는 제2 플로우 테이블 엔트리를 반송하고, 상기 제2 플로우 테이블 엔트리에서의 제4 필드는 상기 제4 필드에서의 실제 값의 인덱스를 반송함 -;
    상기 가상 계층 디바이스에 의해, 상기 제1 플로우 테이블 엔트리와 상기 제2 플로우 테이블 엔트리를 제3 플로우 테이블 엔트리로 결합하는 단계; 및
    상기 가상 계층 디바이스에 의해, 상기 제3 플로우 테이블 엔트리를 반송하는 제3 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하는 단계
    를 포함하는 플로우 테이블 중계 방법.
  10. 소프트웨어 정의 네트워크 제어기로서,
    제1 플로우 테이블 엔트리를 생성하도록 구성된 생성 유닛 - 상기 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 상기 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 상기 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -; 및
    오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하도록 구성된 송신 유닛 - 상기 오픈플로우 프로토콜 메시지는 상기 제1 플로우 테이블 엔트리를 반송함 -
    을 포함하는 소프트웨어 정의 네트워크 제어기.
  11. 제10항에 있어서,
    상기 인덱스는 상기 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자인, 소프트웨어 정의 네트워크 제어기.
  12. 제10항 또는 제11항에 있어서,
    상기 제1 플로우 테이블 엔트리에서의 제2 필드 세트의 각각의 필드는 다수의 실제 값을 반송하고, 상기 제2 필드 세트는 M개의 필드를 포함하고, M은 양의 정수인, 소프트웨어 정의 네트워크 제어기.
  13. 제10항 내지 제12항 중 어느 한 항에 있어서,
    상기 소프트웨어 정의 네트워크 제어기는, 상기 생성 유닛이 상기 제1 플로우 테이블 엔트리를 생성하기 이전에, 스위치로부터 제1 패킷 또는 제1 패킷의 패킷 헤더를 수신하고, 미리 설정된 처리 정책에 따라, 상기 제1 패킷을 처리하는데 이용되는 라우팅 명령어 세트를 결정하도록 구성된 수신 유닛을 더 포함하고, 상기 제1 플로우 테이블 엔트리의 명령어 필드가 상기 라우팅 명령어 세트 또는 상기 라우팅 명령어 세트의 인덱스를 반송하는, 소프트웨어 정의 네트워크 제어기.
  14. 오픈플로우 스위치로서,
    오픈플로우 프로토콜 메시지를 수신하도록 구성된 수신 유닛 - 상기 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 상기 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 상기 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 상기 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -;
    상기 제1 필드 세트에서의 상기 실제 값의 인덱스에 기초하여 상기 제1 필드 세트에서의 상기 실제 값을 획득하도록 구성된 획득 유닛; 및
    상기 제1 필드 세트에서의 상기 실제 값의 것이며 상기 제1 플로우 테이블 엔트리에서의 상기 제1 필드 세트에서 반송되는 상기 인덱스를, 상기 획득 유닛에 의해 획득되는 상기 제1 필드 세트의 상기 실제 값으로 대체하도록 구성된 대체 유닛
    을 포함하는 오픈플로우 스위치.
  15. 제14항에 있어서,
    상기 인덱스는 상기 오픈플로우 스위치에 저장된 플로우 테이블 엔트리의 플로우 테이블 엔트리 식별자이고,
    상기 획득 유닛은, 상기 플로우 테이블 엔트리 식별자에 기초하여, 상기 플로우 테이블 엔트리 식별자에 의해 표현된 상기 플로우 테이블 엔트리에 있으며 상기 제1 필드 세트와 동일한 프로토콜 타입을 갖는 제3 필드 세트에 채워진 실제 값을 획득하도록 구체적으로 구성되고, 상기 제3 필드 세트 및 상기 제1 필드 세트에 있으며 동일한 프로토콜 타입을 갖는 필드들은 동일한 실제 값을 갖는, 오픈플로우 스위치.
  16. 제14항 또는 제15항에 있어서,
    상기 오픈플로우 스위치는, 저장된 상기 제1 플로우 테이블 엔트리 또는 상기 제1 플로우 테이블 엔트리의 식별자를 소프트웨어 정의 네트워크 제어기로 송신하도록 구성된 제1 송신 유닛을 더 포함하는 오픈플로우 스위치.
  17. 제14항 내지 제16항 중 어느 한 항에 있어서,
    상기 오픈플로우 스위치는,
    상기 제1 플로우 테이블 엔트리가 수신되기 이전에, 제1 패킷 또는 제1 패킷의 패킷 헤더를 상기 소프트웨어 정의 네트워크 제어기로 송신하도록 구성된 제2 송신 유닛 - 상기 제1 플로우 테이블 엔트리의 명령어 필드는 상기 제1 패킷을 처리하는데 이용되는 라우팅 명령어 세트 또는 라우팅 명령어 세트의 인덱스를 반송함 -; 및
    상기 라우팅 명령어 세트에 기초하여 상기 제1 패킷을 처리하도록 구성된 패킷 처리 유닛
    을 더 포함하는 오픈플로우 스위치.
  18. 가상 계층 디바이스로서,
    제1 소프트웨어 정의 네트워크 제어기로부터 제1 오픈플로우 프로토콜 메시지를 수신하고 - 상기 제1 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 상기 제1 플로우 테이블 엔트리에서의 제1 필드는 상기 제1 필드에서의 실제 값의 인덱스를 반송함 -; 제2 소프트웨어 정의 네트워크 제어기로부터 제2 오픈플로우(OpenFlow) 프로토콜 메시지를 수신하도록 구성된 수신 유닛 - 상기 제2 오픈플로우 프로토콜 메시지는 제2 플로우 테이블 엔트리를 반송하고, 상기 제2 플로우 테이블 엔트리에서의 제4 필드는 상기 제4 필드에서의 실제 값의 인덱스를 반송함 -;
    상기 제1 플로우 테이블 엔트리와 상기 제2 플로우 테이블 엔트리를 제3 플로우 테이블 엔트리로 결합하도록 구성된 결합 유닛; 및
    상기 제3 플로우 테이블 엔트리를 반송하는 제3 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하도록 구성된 송신 유닛
    을 포함하는 가상 계층 디바이스.
  19. 통신 시스템으로서,
    제1 플로우 테이블 엔트리를 생성하고 - 상기 제1 플로우 테이블 엔트리에서의 제1 필드 세트는 상기 제1 필드 세트에서의 실제 값의 인덱스를 반송하고, 상기 제1 필드 세트는 N개의 필드를 포함하고, N은 양의 정수임 -; 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하도록 구성된 소프트웨어 정의 네트워크 제어기 - 상기 오픈플로우 프로토콜 메시지는 상기 제1 플로우 테이블 엔트리를 반송함 -; 및
    상기 오픈플로우 프로토콜 메시지를 수신하고; 상기 제1 필드 세트에서의 상기 실제 값의 인덱스에 기초하여 상기 제1 필드 세트에서의 상기 실제 값을 획득하고; 상기 제1 필드 세트에서의 상기 실제 값의 것이며 상기 제1 플로우 테이블 엔트리에서의 상기 제1 필드 세트에서 반송되는 상기 인덱스를 상기 제1 필드 세트에서의 상기 실제 값으로 대체하도록 구성된 상기 오픈플로우 스위치
    를 포함하는 통신 시스템.
  20. 통신 시스템으로서,
    제1 오픈플로우(OpenFlow) 프로토콜 메시지를 송신하도록 구성된 제1 소프트웨어 정의 네트워크 제어기 - 상기 제1 오픈플로우 프로토콜 메시지는 제1 플로우 테이블 엔트리를 반송하고, 상기 제1 플로우 테이블 엔트리에서의 제1 필드는 상기 제1 필드에서의 실제 값의 인덱스를 반송함 -;
    제2 오픈플로우 프로토콜 메시지를 송신하도록 구성된 제2 소프트웨어 정의 네트워크 제어기 - 상기 제2 오픈플로우 프로토콜 메시지는 제2 플로우 테이블 엔트리를 반송하고, 상기 제2 플로우 테이블 엔트리에서의 제4 필드는 상기 제4 필드에서의 실제 값의 인덱스를 반송함 -;
    상기 제1 소프트웨어 정의 네트워크 제어기로부터 상기 제1 오픈플로우 프로토콜 메시지를 수신하고; 상기 제2 소프트웨어 정의 네트워크 제어기로부터 상기 제2 오픈플로우 프로토콜 메시지를 수신하고; 상기 제1 플로우 테이블 엔트리와 상기 제2 플로우 테이블 엔트리를 제3 플로우 테이블 엔트리로 결합하고; 상기 제3 플로우 테이블 엔트리를 반송하는 제3 오픈플로우 프로토콜 메시지를 오픈플로우 스위치로 송신하도록 구성된 가상 계층 디바이스; 및
    상기 제3 오픈플로우 프로토콜 메시지를 수신하고; 상기 제3 오픈플로우 프로토콜 메시지에서 반송되는 상기 제3 플로우 테이블 엔트리를 상기 제1 플로우 테이블 엔트리 및 상기 제2 플로우 테이블 엔트리로 분할하고; 상기 제1 필드의 상기 실제 값의 인덱스에 기초하여 상기 제1 필드의 상기 실제 값을 획득하고; 상기 제4 필드의 상기 실제 값의 인덱스에 기초하여 상기 제4 필드의 상기 실제 값을 획득하고; 상기 제1 필드에서의 상기 실제 값의 것이며 상기 제1 플로우 테이블 엔트리에서의 상기 제1 필드에서 반송되는 상기 인덱스를 상기 제1 필드에서의 상기 실제 값으로 대체하고; 상기 제4 필드의 상기 실제 값의 것이며 상기 제2 플로우 테이블 엔트리에서의 상기 제4 필드에서 반송되는 상기 인덱스를 상기 제4 필드의 상기 실제 값으로 대체하도록 구성된 상기 오픈플로우 스위치
    를 포함하는 통신 시스템.
KR1020167036135A 2014-05-27 2014-05-27 플로우 테이블 관리 방법, 및 관련 디바이스 및 시스템 KR101913490B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/078551 WO2015180040A1 (zh) 2014-05-27 2014-05-27 流表管理方法及相关设备和系统

Publications (2)

Publication Number Publication Date
KR20170010835A true KR20170010835A (ko) 2017-02-01
KR101913490B1 KR101913490B1 (ko) 2018-10-30

Family

ID=54697826

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167036135A KR101913490B1 (ko) 2014-05-27 2014-05-27 플로우 테이블 관리 방법, 및 관련 디바이스 및 시스템

Country Status (6)

Country Link
US (1) US10243833B2 (ko)
EP (1) EP3142305A4 (ko)
KR (1) KR101913490B1 (ko)
CN (1) CN105359470B (ko)
RU (1) RU2668065C2 (ko)
WO (1) WO2015180040A1 (ko)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102146568B1 (ko) * 2019-09-24 2020-08-20 프라이빗테크놀로지 주식회사 네트워크 접속 제어 시스템 및 그 방법
WO2021020935A1 (ko) * 2019-07-31 2021-02-04 현대자동차주식회사 차량 내부 네트워크에 대한 sdn 기반의 침입 대응 방법 및 이를 이용한 시스템
KR102226915B1 (ko) * 2019-10-31 2021-03-11 아토리서치(주) 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법, 장치 및 컴퓨터 프로그램
US11082256B2 (en) 2019-09-24 2021-08-03 Pribit Technology, Inc. System for controlling network access of terminal based on tunnel and method thereof
US11190494B2 (en) 2019-09-24 2021-11-30 Pribit Technology, Inc. Application whitelist using a controlled node flow
US11271777B2 (en) 2019-09-24 2022-03-08 Pribit Technology, Inc. System for controlling network access of terminal based on tunnel and method thereof
US11381557B2 (en) 2019-09-24 2022-07-05 Pribit Technology, Inc. Secure data transmission using a controlled node flow
WO2023033585A1 (ko) * 2021-09-02 2023-03-09 프라이빗테크놀로지 주식회사 분산 게이트웨이 환경에 최적화된 터널링 및 게이트웨이 접속 시스템 및 그에 관한 방법
US11652801B2 (en) 2019-09-24 2023-05-16 Pribit Technology, Inc. Network access control system and method therefor

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016014086A1 (en) * 2014-07-25 2016-01-28 Hewlett-Packard Development Company, L.P. Software-defined sensing
US20160315866A1 (en) * 2015-04-27 2016-10-27 Telefonaktiebolaget L M Ericsson (Publ) Service based intelligent packet-in mechanism for openflow switches
CN106411820B (zh) * 2015-07-29 2019-05-21 中国科学院沈阳自动化研究所 一种基于sdn架构的工业通信流传输安全控制方法
EP3375138B1 (en) * 2015-11-09 2020-09-02 Telefonaktiebolaget LM Ericsson (publ) State synchronization between a controller and a switch in a communications network
US9967178B1 (en) * 2015-12-15 2018-05-08 Juniper Networks, Inc. Flow record size reduction
US10484282B2 (en) * 2016-01-12 2019-11-19 International Business Machines Corporation Interconnecting multiple separate openflow domains
CN106850438A (zh) * 2016-12-27 2017-06-13 中山大学 一种实时获取sdn交换机流表空间占有率的方法
CN108259466B (zh) * 2017-12-08 2020-06-05 中国联合网络通信集团有限公司 DDoS流量回注方法、SDN控制器及网络系统
CN109450798B (zh) * 2018-12-13 2022-07-12 郑州云海信息技术有限公司 路由表信息的管理方法和计算机可读存储介质
CN110430114B (zh) * 2019-07-24 2022-02-11 中国电子科技集团公司第七研究所 一种虚拟路由器及实现sdn网络与传统ip网络互联的方法
CN112187523A (zh) * 2020-09-10 2021-01-05 华云数据控股集团有限公司 一种网络高可用实现方法及超融合系统
CN114884858A (zh) * 2022-01-28 2022-08-09 珠海星云智联科技有限公司 流表处理的方法和相关装置、电子设备、介质和程序产品

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2639638T3 (es) 2010-09-08 2017-10-27 Nec Corporation Sistema de conmutación, procedimiento de control de conmutación y medio de memoria
US20120099591A1 (en) * 2010-10-26 2012-04-26 Dell Products, Lp System and Method for Scalable Flow Aware Network Architecture for Openflow Based Network Virtualization
US9450870B2 (en) * 2011-11-10 2016-09-20 Brocade Communications Systems, Inc. System and method for flow management in software-defined networks
US8711860B2 (en) * 2011-12-22 2014-04-29 Telefonaktiebolaget L M Ericsson (Publ) Controller for flexible and extensible flow processing in software-defined networks
CN103379039B (zh) * 2012-04-23 2016-12-14 华为技术有限公司 一种用于流统计的方法、装置及系统
CN103703726B (zh) * 2012-06-29 2017-04-26 华为技术有限公司 数据报文的控制方法、设备及系统
CN103067245B (zh) * 2012-12-28 2015-10-28 中兴通讯股份有限公司 一种用于网络虚拟化的流表空间隔离装置及方法
US8964752B2 (en) * 2013-02-25 2015-02-24 Telefonaktiebolaget L M Ericsson (Publ) Method and system for flow table lookup parallelization in a software defined networking (SDN) system

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021020935A1 (ko) * 2019-07-31 2021-02-04 현대자동차주식회사 차량 내부 네트워크에 대한 sdn 기반의 침입 대응 방법 및 이를 이용한 시스템
KR102146568B1 (ko) * 2019-09-24 2020-08-20 프라이빗테크놀로지 주식회사 네트워크 접속 제어 시스템 및 그 방법
WO2021060854A1 (ko) * 2019-09-24 2021-04-01 프라이빗테크놀로지 주식회사 네트워크 접속 제어 시스템 및 그 방법
US11082256B2 (en) 2019-09-24 2021-08-03 Pribit Technology, Inc. System for controlling network access of terminal based on tunnel and method thereof
US11190494B2 (en) 2019-09-24 2021-11-30 Pribit Technology, Inc. Application whitelist using a controlled node flow
US11271777B2 (en) 2019-09-24 2022-03-08 Pribit Technology, Inc. System for controlling network access of terminal based on tunnel and method thereof
US11381557B2 (en) 2019-09-24 2022-07-05 Pribit Technology, Inc. Secure data transmission using a controlled node flow
US11652801B2 (en) 2019-09-24 2023-05-16 Pribit Technology, Inc. Network access control system and method therefor
KR102226915B1 (ko) * 2019-10-31 2021-03-11 아토리서치(주) 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법, 장치 및 컴퓨터 프로그램
WO2023033585A1 (ko) * 2021-09-02 2023-03-09 프라이빗테크놀로지 주식회사 분산 게이트웨이 환경에 최적화된 터널링 및 게이트웨이 접속 시스템 및 그에 관한 방법

Also Published As

Publication number Publication date
EP3142305A4 (en) 2017-06-07
EP3142305A1 (en) 2017-03-15
RU2016150785A3 (ko) 2018-06-22
RU2016150785A (ru) 2018-06-22
KR101913490B1 (ko) 2018-10-30
US20170078184A1 (en) 2017-03-16
CN105359470B (zh) 2019-05-24
CN105359470A (zh) 2016-02-24
WO2015180040A1 (zh) 2015-12-03
RU2668065C2 (ru) 2018-09-25
US10243833B2 (en) 2019-03-26

Similar Documents

Publication Publication Date Title
KR101913490B1 (ko) 플로우 테이블 관리 방법, 및 관련 디바이스 및 시스템
US10218618B2 (en) Method and apparatus for processing operation request in storage system
CN105745883B (zh) 转发表同步的方法、网络设备和系统
KR101886291B1 (ko) 흐름 엔트리 구성 방법, 장치, 및 시스템
US8718061B2 (en) Data center network system and packet forwarding method thereof
WO2017113231A1 (zh) 一种报文传输的方法、装置和系统
CN107113241B (zh) 路由确定方法、网络配置方法以及相关装置
US10742697B2 (en) Packet forwarding apparatus for handling multicast packet
JP2017518710A (ja) サービスフロー処理方法、装置、およびデバイス
CN105247826A (zh) 网络设备的网络功能虚拟化
US10454711B2 (en) Method for obtaining port path and apparatus
CN104717081A (zh) 一种网关功能的实现方法及装置
US9401865B2 (en) Network appliance redundancy system, control apparatus, network appliance redundancy method and program
EP3313031B1 (en) Sdn-based arp realization method and apparatus
US9537751B2 (en) Divided hierarchical network system based on software-defined networks
CN104508651A (zh) 镜像非对称集群多处理器系统中的连接网
CN104852846B (zh) 一种数据转发控制方法及系统
US10581740B2 (en) Packet forwarding method and related apparatus
EP2924925A1 (en) Communication system, virtual-network management device, communication node, and communication method and program
CN107819708A (zh) 基于虚拟机迁移的数据处理方法、系统及设备
CN106209634B (zh) 地址映射关系的学习方法及装置
US9847929B2 (en) Cluster and forwarding method
JP6379702B2 (ja) データ転送システム、データ転送サーバ、データ転送方法、および、プログラム
JP2016225783A (ja) 仮想ネットワークシステムおよび仮想ネットワーク経路設定方法
WO2016145577A1 (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
GRNT Written decision to grant