KR20150056035A - SDN-based Network Device with extended function and method of processing a packet in the same device - Google Patents

SDN-based Network Device with extended function and method of processing a packet in the same device Download PDF

Info

Publication number
KR20150056035A
KR20150056035A KR1020140104472A KR20140104472A KR20150056035A KR 20150056035 A KR20150056035 A KR 20150056035A KR 1020140104472 A KR1020140104472 A KR 1020140104472A KR 20140104472 A KR20140104472 A KR 20140104472A KR 20150056035 A KR20150056035 A KR 20150056035A
Authority
KR
South Korea
Prior art keywords
function module
packet
execution
function
entry
Prior art date
Application number
KR1020140104472A
Other languages
Korean (ko)
Other versions
KR102193371B1 (en
Inventor
고남석
노성기
박종대
허환조
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to US14/536,831 priority Critical patent/US9577924B2/en
Publication of KR20150056035A publication Critical patent/KR20150056035A/en
Application granted granted Critical
Publication of KR102193371B1 publication Critical patent/KR102193371B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-defined switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/252Store and forward routing

Abstract

The present invention relates to a software-defined networking (SDN) technology. More specifically, the invention relates to the extension of the functionality of an SDN-based networking device. The networking device in accordance with the present invention comprises: multiple flow tables; multiple functional modules performing different functions for each packet; and an entry functional module which determines operations to be performed first out of a multitude of operations including table search and functional module operations corresponding to each packet when the packet are received. Once the entry functional module assigns the table search or functional module operation to be run next as a performance result of the operation determined by the entry functional module, and the assignment repeats itself until a different set of instructions is given to the packet.

Description

확장된 기능을 구비한 SDN-기반 네트워크 장치 및 상기 장치에서의 패킷 처리 방법{SDN-based Network Device with extended function and method of processing a packet in the same device}[0001] The present invention relates to an SDN-based network device having an extended function and a packet processing method in the apparatus,

본 발명은 소프트웨어 정의형 네트워킹(Software Defined Networking: SDN)에 관한 것으로서, 구체적으로는 SDN 네트워크 장치의 기능 확장에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to software defined networking (SDN), and more specifically, to extension of functions of an SDN network device.

기존의 SDN 구조는 제어 플래인과 데이터 플래인에 대한 명확한 구분을 지향한다. 데이터 플래인은 패킷에 대하여 제어 플래인이 지정한 액션(예, 인캡슐레이션(encapsulation), 디캡슐레이션(decapsulation) 등)을 수행한 후 제어 플래인이 지정한 경로로 패킷을 포워딩하는 단순한 기능을 수행한다. 하지만, 그러한 구조에서는 모든 지능이 제어 플래인과 그 위에 동작하는 응용들에 주어진다. 이에 따라, 패킷 처리를 위한 단순 작업을 제외한 지능이 필요한 대부분의 작업은 제어 플래인에서 이루어져야 하기 때문에 패킷 처리에 대한 지연 이슈와 데이터 플래인과 제어 플래인간 잦은 패킷/메시지의 교환으로 인한 성능 이슈가 제기되고 있다. The existing SDN architecture seeks a clear distinction between the control plane and the data plane. The data plane performs a simple function of forwarding packets to the path specified by the control plane after performing actions (eg, encapsulation, decapsulation, etc.) specified by the control plane on the packets do. In such a structure, however, all intelligence is given to the control plane and the applications running on it. Therefore, since most tasks requiring intelligence except for simple processing for packet processing must be performed in the control plane, delay issues in packet processing and performance issues due to exchange of data and control flags and frequent packets / messages It is being raised.

따라서, 본 발명은 기존 SDN 구조의 제어 플래인과 데이터 플래인의 완벽한 분리 및 이에 따른 데이터 플래인의 단순 패킷 처리에 의해 유발되는 비효율적인 패킷 처리 과정을 개선하고자 한다.
Therefore, the present invention intends to improve the inefficient packet processing process caused by the complete separation of the control plane and the data plane of the existing SDN structure and hence the simple packet processing of the data plane.

전술한 목적을 달성하기 위해, 본 발명의 일실시예에 따른 네트워크 장치는, 복수의 플로우 테이블; 각각이 패킷에 대한 상이한 처리를 수행하는 복수의 기능 모듈; 및 패킷이 수신되면, 상기 패킷에 대하여 테이블 검색 동작 및 기능 모듈 실행 동작중에서 먼저 수행될 동작을 결정하는 엔트리 기능 모듈을 포함한다. 상기 엔트리 기능 모듈에 의해 결정된 동작의 수행 결과로서 다음 수행될 테이블 검색 또는 기능 모듈 실행 동작이 지정되며, 상기 지정은 상기 패킷에 대한 출력 인스트럭션이 주어질 때까지 반복될 수 있다.To achieve the above object, a network apparatus according to an embodiment of the present invention includes: a plurality of flow tables; A plurality of functional modules, each of which performs different processing for this packet; And an entry function module for, when the packet is received, determining an operation to be performed first among the table search operation and the function module execution operation for the packet. A table search or a function module execution operation to be performed next is designated as a result of performing the operation determined by the entry function module, and the designation can be repeated until the output instruction for the packet is given.

일 실시 예에서, 상기 기능 모듈은 상기 기능 모듈이 실행된 후에 다음 수행될 수행될 동작 정보를 포함할 수 있다.In one embodiment, the function module may include operation information to be performed next after the function module is executed.

일 실시 예에서, 상기 테이블 검색 동작이 수행된 경우에 다음 수행될 동작은 상기 패킷에 매칭된 플로우 엔트리에 포함된 인스트럭션에 의해 지정될 수 있다.In one embodiment, the next operation to be performed when the table lookup operation is performed may be specified by instructions included in the flow entry matched to the packet.

일 실시 예에서, 상기 인스트럭션은 오픈플로우 채널 또는 그와 유사한 기능을 수행하는 제어 채널을 통해 제어기에 의해 설정 가능하다. In one embodiment, the instruction is configurable by the controller via a control channel that performs an open-flow channel or the like.

일 실시 예에서, 상기 인스트럭션은 다음 수행될 하나 이상의 테이블 검색 또는 하나 이상의 기능 모듈 실행을 지정할 수 있다. In one embodiment, the instructions may specify one or more table lookups to be performed next, or one or more function module executions.

일 실시 예에서, 상기 인스트럭션은 다음 수행될 기능 모듈 실행 동작과 함께 상기 기능 모듈 실행에 후속하여 수행될 다른 기능 모듈 실행 또는 다른 테이블 검색을 지정할 수 있다.In one embodiment, the instructions may specify another function module execution or other table search to be performed subsequent to the function module execution, with the function module execute operation to be performed next.

일 실시 예에서, 상기 인스트럭션은 다음 수행될 일련의 조합된 테이블 검색 및 기능 모듈 실행 동작 리스트를 지정할 수 있다. In one embodiment, the instructions may specify a set of combined table lookup and function module execution action lists to be performed next.

일 실시 예에서, 상기 엔트리 기능 모듈에 의해 결정된 동작이 테이블 검색인 경우에 상기 복수의 플로우 테이블중 첫 번째 플로우 테이블 검색이 수행된다.In one embodiment, the first flow table search among the plurality of flow tables is performed when the operation determined by the entry function module is a table search.

일 실시 예에서, 상기 엔트리 기능 모듈에 의해 결정된 동작이 기능 모듈 실행인 경우에 상기 복수의 기능 모듈중 첫 번째 기능 모듈이 실행된다.In one embodiment, when the operation determined by the entry function module is a function module execution, the first one of the plurality of function modules is executed.

본 발명의 일 실시 예에 따라, 복수의 플로우 테이블, 엔트리 모듈 및 복수의 기능 모듈을 구비하는 네트워크 장치에서 패킷을 처리하는 방법이 제공된다. 상기 방법은, 패킷을 수신하는 단계; 상기 엔트리 모듈을 실행함으로써 상기 수신된 패킷에 대해 다음 수행될 동작으로서 테이블 검색 또는 기능 모듈 실행을 결정하는 단계; 상기 결정된 테이블 검색 또는 기능 모듈 실행을 수행함으로써 상기 패킷을 처리하는 단계; 및 상기 테이블 검색 또는 상기 기능 모듈 실행의 결과로서 지정되는 다른 테이블 검색 또는 다른 기능 모듈 실행 동작을 수행함으로써 상기 패킷을 후속 처리하는 단계를 포함한다. 상기 다른 테이블 검색 또는 상기 다른 기능 모듈의 실행 결과로서 또 다른 테이블 검색 또는 또 다른 기능 모듈 실행 동작이 지정될 수 있으며, 상기 지정은 상기 패킷에 대한 출력 인스트럭션이 주어질 때까지 반복된다.According to an embodiment of the present invention, a method of processing a packet in a network device having a plurality of flow tables, an entry module and a plurality of function modules is provided. The method includes receiving a packet; Determining a table search or function module execution as an operation to be performed next for the received packet by executing the entry module; Processing the packet by performing the determined table search or function module execution; And subsequently processing the packet by performing another table search or other function module execution operation designated as a result of the table search or the execution of the function module. Another table search or another function module execution operation may be designated as a result of the other table search or the execution of the other function module, and the designation is repeated until the output instruction for the packet is given.

일 실시 예에서, 상기 기능 모듈은 상기 기능 모듈이 실행된 후에 다음 수행될 수행될 동작 정보를 포함할 수 있다.In one embodiment, the function module may include operation information to be performed next after the function module is executed.

일 실시 예에서, 상기 테이블 검색의 결과로서 지정되는 다음 수행 동작은 상기 패킷에 매칭된 플로우 엔트리에 포함된 인스트럭션에 의해 지정될 수 있다.In one embodiment, the next performing operation specified as a result of the table lookup may be specified by instructions included in the flow entry matched to the packet.

일 실시 예에서, 상기 인스트럭션은 오픈플로우 채널 또는 그와 유사한 기능을 수행하는 제어 채널을 통해 제어기에 의해 설정될 수 있다.In one embodiment, the instructions may be set by the controller via a control channel that performs an open-flow channel or the like.

일 실시 예에서, 상기 인스트럭션은 다음 수행될 하나 이상의 테이블 검색 또는 하나 이상의 기능 모듈 실행을 지정할 수 있다.In one embodiment, the instructions may specify one or more table lookups to be performed next, or one or more function module executions.

일 실시 예에서, 상기 인스트럭션은 다음 수행될 기능 모듈 실행과 함께 상기 기능 모듈 실행에 후속하여 수행될 다른 기능 모듈 실행 또는 다른 테이블 검색을 함께 지정할 수 있다.In one embodiment, the instructions may specify execution of another function module to be performed subsequent to execution of the function module, together with execution of the next function module to be performed, or search of another table.

일 실시 예에서, 상기 인스트럭션은 다음 수행될 일련의 조합된 테이블 검색 및 기능 모듈 실행 동작 리스트를 지정할 수 있다.
In one embodiment, the instructions may specify a set of combined table lookup and function module execution action lists to be performed next.

본 발명의 실시 예에 따르면, 네트워크 장치(예, SDN 스위치)에 대한 프로그래밍이 가능하도록 하는 기존의 SDN 개념을 따르면서 네트워크 장치가 더욱 지능화된 다양한 기능을 수행할 수 있도록 한다. 본 발명은 기존 SDN 구조의 단점으로 지적되고 있는 SDN 스위치와 SDN 제어기간의 지연 문제를 효율적으로 개선할 수 있으며 SDN 스위치에 대한 제조사별 차별화된 기능 부각이 가능하다. According to an embodiment of the present invention, the existing SDN concept that enables programming for a network device (e.g., an SDN switch) is followed so that the network device can perform various more intelligent functions. The present invention can effectively improve the delay problem of the SDN switch and the SDN control period which are pointed out as disadvantages of the conventional SDN structure, and it is possible to differentiate the function of the SDN switch according to the manufacturer.

도 1은 오픈플로우(OpenFlow)에 기반한 SDN의 구조를 도시한다.
도 2는 도 1의 스위치에서 패킷을 처리하는 과정을 도시한 흐름도이다.
도 3은 본 발명의 일 실시 예에 따른 SDN 네트워크 장치의 구조를 개념적으로 도시한다.
도 4는 도 3에 도시된 복수개의 테이블 및 기능 모듈간 정보가 전달되는 구조를 도시한다.
도 5는 본 발명의 일 실시 예에 따른 네트워크 장치에서 수행되는 패킷 처리 과정을 도시한 흐름도이다.
도 6은 본 발명의 일 실시 예에 따른 네트워크 장치에서 기능 모듈과 테이블 검색간 연동되는 동작의 일 예를 도시한다.
Figure 1 shows the structure of an SDN based on OpenFlow.
2 is a flowchart illustrating a process of processing packets in the switch of FIG.
FIG. 3 conceptually illustrates the structure of an SDN network device according to an embodiment of the present invention.
FIG. 4 illustrates a structure in which information is transferred between a plurality of tables and functional modules shown in FIG.
5 is a flowchart illustrating a packet processing process performed in a network device according to an embodiment of the present invention.
FIG. 6 illustrates an example of an operation interworking between a function module and a table search in a network device according to an exemplary embodiment of the present invention.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시 예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 이를 상세한 설명을 통해 상세히 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.While the present invention has been described in connection with certain exemplary embodiments, it is to be understood that the invention is not limited to the disclosed embodiments, but, on the contrary, is intended to cover various modifications and similarities. It should be understood, however, that the invention is not intended to be limited to the particular embodiments, but includes all modifications, equivalents, and alternatives falling within the spirit and scope of the invention.

본 발명을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, the present invention will be described in detail with reference to the accompanying drawings.

또한, 본 명세서 및 청구항에서 사용되는 단수 표현은, 달리 언급하지 않는 한 일반적으로 "하나 이상"을 의미하는 것으로 해석되어야 한다.In addition, the singular phrases used in the present specification and claims should be interpreted generally to mean "one or more " unless otherwise stated.

또한, 본 명세서에서 사용되는 용어들중 "모듈", "부", "인터페이스"등은 일반적으로 컴퓨터 관련 객체를 의미하며, 예를 들어, 하드웨어, 소프트웨어 및 이들의 조합을 의미할 수 있다.
Also, the terms "module,""part,""interface," and the like, used in the present specification generally mean computer-related objects and may mean, for example, hardware, software and combinations thereof.

도 1은 오픈플로우(OpenFlow)에 기반한 SDN의 구조를 도시한다. 도시된 바와 같이, 제어 플래인(예, 제어기(110))과 데이터 플래인(예, 스위치(120))이 분리되며, 분리된 제어 플래인과 데이터 플래인은 오픈플로우 프로토콜을 통해서 연동될 수 있다. 스위치(120)은 제어기와 통신하기 위한 오픈플로우 제어 채널(121), 파이프라인 형태로 이루어진 복수개의 플로우 테이블(122a 내지 122n) 및 플로우 테이블(122a 내지 122n)의 최종 검색결과에 따른 액션집합(action set)을 실행시키는 액션실행모듈(123)을 포함할 수 있다. 스위치(120)는 자신에 입력되는 패킷에 매칭되는 플로우를 하나 이상의 플로우 테이블(122a 내지 122n)에서 검색하고 검색 결과에 따른 액션집합을 실행함으로써 해당 패킷을 처리한다.Figure 1 shows the structure of an SDN based on OpenFlow. As shown, the control plane (e.g., controller 110) and the data plane (e.g., switch 120) are separated and the separate control plane and data plane can be interlocked via the open flow protocol have. The switch 120 includes an open flow control channel 121 for communicating with the controller, a plurality of flow tables 122a to 122n in the form of a pipeline, and an action set according to the final search result of the flow tables 122a to 122n and an action execution module 123 for executing the action set. The switch 120 searches the one or more flow tables 122a to 122n for a flow matched with a packet input thereto and processes the packet by executing an action set according to the search result.

도 2는 도 1의 스위치에서 패킷을 처리하는 과정을 도시한 흐름도이다. 패킷이 입력되면, 스위치는 첫 번째 플로우 테이블부터 패킷에 매칭되는 엔트리를 검색한다(S210). 이때, 검색 키는 테이블에 대한 정의에 따라 달라질 수 있다. 예를 들어, IP 소스 주소, IP 목적지 주소 등과 같은 패킷 헤더 필드와 입력 포트 (input port) 정보가 검색키로 이용될 수 있다. 테이블에 매칭되는 엔트리가 존재하는지 판단하고(S220), 매칭되는 엔트리가 존재하는 경우에, 해당 엔트리에 대한 카운트를 업데이트하고 지정된 인스트럭션을 수행한다(S230). 인스트럭션은 액션 집합 업데이트, 패킷 헤더 정보 또는 다음 테이블 검색에 사용될 매치 필드(match fields) 업데이트, 메타데이터의 업데이트 등을 포함할 수 있다. 매칭된 엔트리의 인스트럭션이 다음 테이블 검색(Goto-Table n) 인스트럭션을 포함하는지 판단하고(S240), 그렇다면 다음 테이블 검색을 시도한다. 다음 테이블 검색(Goto-Table n) 인스트럭션이 주어지지 않았다면(즉, 마지막 테이블 검색이면), 현재까지 여러 개의 테이블 검색을 거쳐 오면서 최종 결정된 액션 집합(action set)을 수행한다(S260).2 is a flowchart illustrating a process of processing packets in the switch of FIG. When a packet is input, the switch searches for an entry matching the packet from the first flow table (S210). At this time, the search key may be changed according to the definition of the table. For example, a packet header field such as an IP source address, an IP destination address, and input port information may be used as a search key. If there is an entry matching the table (S220), if there is an entry to be matched, the count for the entry is updated and the designated instruction is performed (S230). The instructions may include an action set update, packet header information, or match field updates to be used to retrieve the next table, update metadata, and the like. It is determined whether the instruction of the matched entry includes the next table search (Goto-Table n) instruction (S240), and then the next table search is attempted. If the next table search (Goto-Table n) instruction is not given (that is, if the last table search is performed), the final determined action set is performed through several table searches (S260).

한편, 테이블 검색에 대해서 매칭이 되는 엔트리가 존재하지 않는 경우에는 테이블-미스 엔트리(또는 디폴트 엔트리)가 존재하는지를 확인한다(S250). 이 엔트리가 존재하는 경우에는 해당 엔트리의 인스트럭션을 수행하겠지만(S230), 해당 엔트리가 존재하지 않는다면 상기 패킷을 폐기한다(S270). On the other hand, when there is no matching entry for the table search, it is checked whether a table-miss entry (or a default entry) exists (S250). If the entry exists, an instruction of the entry is performed (S230), but if the entry does not exist, the packet is discarded (S270).

전술한 패킷 처리 과정은 오픈플로우 스펙(OpenFlow Specification 1.4 공식 릴리즈)에 자세히 기재되어 있으므로, 자세한 설명은 생략한다.The packet processing described above is described in detail in the OpenFlow Specification 1.4 official release, so a detailed description thereof will be omitted.

한편, 현재 시점의 오픈플로우 스펙에 정의된 인스트럭션은 필수 인스트럭션과 선택적인 인스트럭션으로 구분되며, 각 인스트럭션에 대한 상세 설명은 상기 스펙에 설명되어 있으며 그에 대한 간략한 설명은 다음과 같다.Meanwhile, the instructions defined in the open-flow specification of the current point of time are divided into essential instructions and optional instructions. A detailed description of each instruction is described in the specification, and a brief description thereof is as follows.

■ 필수 인스트럭션Required instructions

- Goto-Table next-table-id: 다음 테이블 식별자(next-table-id)에 해당되는 테이블 검색 요청- Goto-Table next-table-id: a table search request corresponding to the next table identifier (next-table-id)

■ 선택적인 인스트럭션Optional instruction

- Meter meter id: 정의된 미터 식별자(meter id) 기반 미터링(meter) 수행- Meter meter id: Performs a meter based meter that is defined.

- Apply-Actions action(s): 액션(action(s))을 수행- Apply-Actions action (s): Perform action (action (s))

- Clear-Actions: 액션집합(action-set)에 설정되어 있는 모든 액션을 클리어함- Clear-Actions: Clears all actions set in the action-set.

- Write-Actions action(s): 액션집합에 액션을 추가함- Write-Actions action (s): Added action to action set

- Write-Metadata metadata/mask: 마스크된 메타데이터(masked metadata)를 다음 테이블로 전달되는 메타데이터(metadata) 필드에 추가함- Write-Metadata metadata / mask: Added masked metadata to the metadata field passed to the following table.

상기 오픈플로우 스펙에서 알 수 있는 것처럼 SDN의 데이터 플래인 기능을 수행하는 오픈플로우 스위치는 테이블에 대한 검색과 그에 대한 처리로서 다른 테이블에 대한 검색, 특정 액션(출력, 헤더 수정, QoS 처리, 폐기 등) 수행, 미터링 적용, 메타데이터 수정 등과 같은 지정된 동작만 수행할 수 있다. 하지만, 이러한 경우, 패킷 처리를 위한 단순 작업을 제외한 지능이 필요한 대부분의 작업은 제어 플래인에서 이루어져야 하기 때문에 패킷 처리의 지연이 발생한다.As can be seen from the Open Flow Specification, the SDN data flow function performs an operation of searching for a table, searching for another table, performing a specific action (output, header modification, QoS processing, ), Metering application, metadata modification, and the like. However, in such a case, most of the tasks requiring intelligence other than the simple task for packet processing must be performed in the control plane, thereby delaying packet processing.

본 발명에 의한 SDN 구조는 데이터 플래인에 다양한 패킷 처리 기능을 모듈화하여 제공하도록 하고 제어 플래인에서 데이터 플래인에 플로우별 패킷 처리 액션으로 기존의 단순한 패킷 헤더 변경 또는 포워딩이 아닌 "모듈화된 패킷 처리 기능 수행"을 지정할 수 있도록 함으로써 기존 SDN 구조에서 제어 플래인과 데이터 플래인의 완전한 분리로 야기되는 단점을 극복할 수 있다. The SDN architecture according to the present invention allows a variety of packet processing functions to be modularized on the data plane and provides a modularized packet processing instead of an existing simple packet header change or forwarding from the control plane to the data plane as a flow- Function can be specified to overcome the disadvantages caused by the complete separation of the control plane and the data plane in the existing SDN structure.

예를 들어, 현재의 SDN 구조에서는 패킷에 대한 IPsec을 처리하기 하고자 하는 경우 IPsec 처리를 SDN 데이터 플래인 (SDN 스위치)내에서 직접적으로 지정할 수 있는 방법이 없어 별도의 IPsec 장비로 패킷을 포워딩하든지 (OpenFlow 스위치는 IPsec에 대한 동작을 전혀 수행하지 않고 단지 IPsec 장비가 연결된 포트로 패킷을 포워딩하도록 명령함), SDN 제어 플래인의 하나의 응용으로 동작하도록 할 수 있다. 하지만, 본 발명에 따른 SDN 구조에서는 IPsec 처리 기능을 하나의 모듈화된 기능으로 정의하고 플로우 테이블의 엔트리내 인스트럭션으로서 "IPsec 처리" 기능 모듈의 실행을 지정하면, 해당 엔트리에 매칭되는 패킷을 "IPsec 처리 모듈"로 전송하여 IPsec 처리되도록 할 수 있다. For example, in the current SDN architecture, there is no way to directly specify IPsec processing in the SDN data plane (SDN switch) when processing IPsec for a packet, so either forwarding the packet to a separate IPsec device The OpenFlow switch instructs the IPsec device to forward the packet to the port to which it is connected, without performing any operation on IPsec) to operate as an application of the SDN control plane. However, in the SDN structure according to the present invention, when the IPsec processing function is defined as one modular function and the execution of the "IPsec processing" function module is designated as an instruction in the entry of the flow table, Module "to be IPsec-processed.

여기서, 제어 플래인 및 그 위에 동작하는 응용은 데이터 플래인이 IPsec을 지원하는 기능 모듈이 포함하고 있음을 미리 알고 있다고 가정한다. 예를 들어, OF-CONFIG 확장을 통하여 데이터 플래인내 포함된 기능 모듈 리스트를 확인할 수 있다. 또한, 데이터 플래인 칩셋이 지원하는 경우, 데이터 플래인은 동적으로 필요한 기능 모듈을 다운로드하여 설치할 수 있다. 이와 같이, 확인된 기능 모듈을 기반으로 제어 플래인 및 그 위에서 동작하는 응용은 데이터 플래인이 지원하는 기능 모듈들을 프로그래밍함으로써 다양한 패킷 처리 기능을 쉽게 구현할 수 있다.Here, it is assumed that the control plane and the application operating on it know in advance that the data plane includes a function module supporting IPsec. For example, the OF-CONFIG extension allows you to see a list of function modules included in the data plane. In addition, if the data plane chipset supports it, the data plane can dynamically download and install the necessary function modules. Thus, based on the identified functional modules, the control plane and the applications running on it can easily implement various packet processing functions by programming the functional modules supported by the data plane.

이하, 도 3 내지 도 5를 참조하여, 본 발명에 따른 SDN 구조에 대해 좀더 자세히 설명한다.Hereinafter, the SDN structure according to the present invention will be described in more detail with reference to FIGS. 3 to 5. FIG.

도 3은 본 발명의 일 실시 예에 따른 SDN 네트워크 장치의 구조를 개념적으로 도시한다.FIG. 3 conceptually illustrates the structure of an SDN network device according to an embodiment of the present invention.

도시된 바와 같이, 본 발명에서 제안하는 SDN 구조 역시 제어 플래인에 해당하는 제어기(310)와 데이터 플래인에 해당하는 네트워크 장치(예, 스위치, 320)로 구분되며, 제어기(310)와 네트워크 장치(320)가 오픈플로우와 같은 프로토콜을 통해 통신하는 구성은 종래와 동일하다. 그러나, 본 발명의 일 실시 예에 따른 네트워크 장치(320)는 복수의 플로우 테이블에 부가하여 엔트리 모듈 및 복수의 기능 모듈(function module)을 포함한다는 점에서 특징이 있다. As shown in the figure, the SDN structure proposed in the present invention is also divided into a controller 310 corresponding to a control plane and a network device corresponding to a data plane (e.g., a switch 320) (320) communicates via a protocol such as open flow is the same as the conventional one. However, the network device 320 according to an embodiment of the present invention is characterized in that it includes an entry module and a plurality of function modules in addition to a plurality of flow tables.

구체적으로, 본 발명의 일 실시 예에 따른 네트워크 장치(320)는 오픈플로우 제어 채널(321), 엔트리 모듈(322), 통신 채널(325)을 통해 상호 연결되는 복수의 플로우 테이블(323-1 내지 323-n) 및 복수의 기능 모듈(324-1 내지 324-n)과, 액션실행모듈(326)을 포함할 수 있다. Specifically, the network device 320 according to an embodiment of the present invention includes a plurality of flow tables 323-1 to 323-3 interconnected through an open flow control channel 321, an entry module 322, and a communication channel 325. [ 323-n, a plurality of function modules 324-1 through 324-n, and an action execution module 326. [

엔트리 모듈(322)은 일종의 기능 모듈로서, 입력되는 패킷에 대해 기본적인 처리를 수행함으로써 다음 수행될 동작이 테이블 검색인지 기능모듈 실행인지 결정한다. 엔트리 모듈(322)의 결정에 따라, 첫번째 테이블(323a)에 대한 검색이 수행되거나 첫번째 기능 모듈(324a)이 수행될 것이다. The entry module 322 is a kind of function module, and performs basic processing on an input packet to determine whether the next operation to be performed is a table search or a function module execution. According to the determination of the entry module 322, a search for the first table 323a will be performed or the first functional module 324a will be executed.

플로우 테이블(323-1 내지 323-n)은 플로우별로 처리 동작을 정의하는 테이블이다. 일실시예에서, 플로우 테이블(323-1 내지 323-n)은 플로우 엔트리내에 다른 테이블 검색 및/또는 기능모듈 실행을 지정하는 인스트럭션을 포함할 수 있다.The flow tables 323-1 to 323-n are tables for defining processing operations for each flow. In one embodiment, the flow tables 323-1 through 323-n may include instructions to specify another table lookup and / or function module execution in the flow entry.

일 실시 예에서, 인스트럭션은 오픈플로우 채널을 통해 제어기에 의해 설정될 수 있다. In one embodiment, the instruction may be set by the controller via an open flow channel.

일 실시 예에서, 인스트럭션은 다음 수행될 하나 이상의 테이블 검색 또는 하나 이상의 기능 모듈 실행을 지정할 수 있다. 예를 들어, 인스트럭션은 'n번째 테이블 검색(Goto-Table n)' 또는 'm번째 기능 모듈 실행(Run-Function m)'와 같은 형태일 수 있다.In one embodiment, the instruction may specify one or more table lookups to be performed next, or one or more function module runs. For example, the instruction may be in the form of an 'nth table search (Goto-Table n)' or an 'm-th function module run (Run-Function m)'.

다른 실시 예에서, 인스트럭션은 다음 수행될 기능 모듈 실행 동작과 함께 상기 기능 모듈 실행에 후속하여 수행될 다른 기능 모듈 실행 또는 다른 테이블 검색을 지정할 수 있다. 예를 들어, 인스트럭션은 'Run-Function x before Goto-Table n', 'Run-Function x before Run-Function y'와 같은 형태일 수 있다.In another embodiment, the instruction may specify another function module execution or another table search to be performed subsequent to the execution of the function module in conjunction with the next execution of the function module to be performed. For example, the instruction may be of the form 'Run-Function x before Goto-Table n', 'Run-Function x before Run-Function y'

또다른 실시예에서, 인스트럭션은 다음 수행될 일련의 조합된 테이블 검색 및 기능 모듈 실행 동작 리스트를 지정할 수 있다. 예를 들어, 인스트럭션은 'Run-Function 1->Goto-Table 1->Run-Function 2->Run-Function 3->Goto-Table 2'와 같은 형태일 수 있다.In yet another embodiment, the instruction may specify a set of combined table lookup and function module execution action lists to be performed next. For example, the instruction can be of the form 'Run-Function 1-> Goto-Table 1-> Run-Function 2-> Run-Function 3-> Goto-Table 2'.

기능 모듈(function module, 324-1 내지 324-n) 각각은 패킷 처리에 관련된 다양한 기능을 수행할 수 있다. 기능 모듈은, 패킷 헤더 변경, IPsec, DPI(Deep Packet Instruction), 부하 분산(load balancing) 기능과 같은 복잡한 기능뿐 아니라 테이블 검색을 지원하는 단순 기능을 수행할 수 있다. 본 발명에 의한 SDN 구조는 SDN 데이터 플래인(예, SDN 스위치와 같은 네트워크 장치) 개발시에 어떠한 기능이 추가되어 있느냐에 따라서 각 네트워크 장치의 차별성 부각이 가능하다. 본 발명에 따르면, 기존의 단순 패킷 조작 및 포워딩을 수행하는 더미 스위치(dummy switch)의 개념을 탈피하여 기존의 SDN에 대한 기본적인 개념(대부분의 지능을 SDN 제어 플래인에 두는 구조)을 유지하면서 효율적인 패킷 처리가 가능하도록 지능화된 SDN 스위치의 구현이 가능하다.Each of the function modules 324-1 through 324-n may perform various functions related to packet processing. Function modules can perform complex functions such as packet header modification, IPsec, Deep Packet Instruction (DPI), and load balancing functions as well as simple functions to support table lookups. The SDN structure according to the present invention can differentiate each network device according to which function is added at the time of SDN data plane development (for example, a network device such as an SDN switch). According to the present invention, the concept of a dummy switch that performs an existing simple packet manipulation and forwarding is removed, and a basic concept (a structure for placing most of the intelligence on the SDN control plane) It is possible to implement an intelligent SDN switch to enable packet processing.

일 실시 예에서, 기능 모듈(324-1 내지 324-n)은 상기 기능 모듈이 실행된 후에 다음 수행될 동작 정보를 포함할 수 있다. 기능 모듈은 다음 수행될 동작으로서 단일/복수의 테이블 검색 또는 단일/복수의 다른 기능 모듈 실행에 대한 정보를 포함할 수 있다. In one embodiment, the function modules 324-1 through 324-n may include operation information to be performed next after the function module is executed. The functional module may include information on single / multiple table retrieval or single / multiple other functional module execution as the next operation to be performed.

기능 모듈들(324-1 내지 324-n)은 스위치 칩셋내에서 하드웨어 방식으로 구현되거나, 동적으로 설치 가능한 소프트웨어 모듈로 구현될 수 있다. 소프트웨어로 구현되는 기능 모듈은, 예를 들어, 스위치 칩셋 내에 프로그래밍이 가능한 다수의 독립적인 프로세싱 유니트에 동적으로 로딩되거나, 스위치 칩셋과 외부 인터페이스를 통해 연결된 별도의 외부 프로세싱 유니트에 동적으로 로딩되어 소정의 기능을 수행할 수 있다. 본 발명은 기능 모듈의 물리적인 위치 및 특정 구현 방식에 국한되지 않으며, 하나의 기능 모듈이 하나 이상의 테이블 검색 및/또는 다른 기능 모듈의 수행에 연계되는 연동 구조 및 동작에 그 특징이 있다. The functional modules 324-1 through 324-n may be implemented in a hardware manner in the switch chipset, or in a dynamically installable software module. Functional modules implemented in software may be dynamically loaded into a number of independent processing units that are programmable, for example, in a switch chipset, or dynamically loaded into a separate external processing unit connected to the switch chipset via an external interface, Function can be performed. The present invention is not limited to the physical location and specific implementation of a functional module, but is characterized by an interlocking structure and operation in which one functional module is associated with the retrieval of one or more tables and / or the execution of other functional modules.

일 실시 예에서, 기능 모듈들(324-1 내지 324-n)에 대한 제어(기능 모듈 실행 후에 다음 수행될 동작 정보에 대한 제어 포함)는 오픈플로우 프로토콜 등을 확장하거나 별도의 인터페이스를 통해 이루어질 수 있다. 또한, 스위치 칩셋 벤더 별로 칩셋에 대한 차별화된 기능을 사용할 수 있도록 하기 위해서는 제어 플래인 및 응용에서 기능 모듈에 대한 제어를 용이하게 할 수 있도록 쉽게 사용 가능한 형태의 API가 제공될 수 있다. In one embodiment, control for functional modules 324-1 through 324-n (including control of operation information to be performed next after the functional module is executed) may be extended through an open flow protocol or the like or via a separate interface have. Also, in order to enable the differentiated functions of the chipset for each switch chipset vendor, an API of an easily usable form can be provided so as to facilitate control of the function module in the control plane and the application.

도 4는 도 3에 도시된 복수개의 테이블 및 기능 모듈간 정보가 전달되는 구조를 도시한다. FIG. 4 illustrates a structure in which information is transferred between a plurality of tables and functional modules shown in FIG.

패킷이 수신되면, 엔트리 모듈(321)이 먼저 수행된다. 엔트리 모듈(321)은 입력 패킷에 대한 기본적인 처리를 수행함으로써 다음 동작으로서 테이블 검색 또는 기능 모듈 수행이 이루어질지 결정한다. When a packet is received, the entry module 321 is performed first. The entry module 321 determines whether a table search or functional module execution is to be performed as the next operation by performing basic processing on the input packet.

엔트리 모듈(321)에 의해 결정된 테이블 검색 또는 기능 모듈 실행 결과로서, 다음 수행될 동작, 즉, 다른 테이블 검색 또는 다른 기능 모듈 실행이 지정될 수 있다. 이러한 다음 수행될 동작의 지정은 패킷에 대한 출력 인스트럭션이 주어질 때까지 반복될 것이다. 즉, 다음 수행될 동작의 지정은 더 이상의 테이블 검색이나 기능 모듈 수행 요구가 없는 시점까지 반복되며 마지막으로 수행되는 테이블 검색 또는 기능 모듈 수행의 결과에 따른 최종 액션 집합의 수행을 통해 패킷 처리가 종료된다. As a result of the table search or function module execution determined by the entry module 321, the next operation to be performed, i.e., another table search or other function module execution, can be specified. The designation of this next operation to be performed will be repeated until an output instruction for the packet is given. That is, the next operation to be performed is repeated until no further table search or function module execution request is made, and the packet processing is ended through the final table search performed or the final action set performed according to the result of the functional module execution .

일 실시 예에서, 테이블 검색 또는 기능 모듈 실행 결과로 다른 테이블 검색 또는 다른 기능 모듈 수행을 지정하는 인스트럭션이 산출되지 않은 경우에는 디폴트로 설정된 인스트럭션이 수행될 수 있다. 한편, 테이블 검색 또는 기능 모듈 수행 결과 인스트럭션이 산출되지 않고 디폴트로 설정된 인스트럭션도 존재하지 않는 경우에, 해당 패킷은 폐기될 수 있다.In one embodiment, the instructions set by default can be performed if an instruction specifying a table lookup or a function module execution is not calculated as a result of executing a table search or a function module. On the other hand, if no table search or function module execution result instruction is computed and no instruction set to default exists, the packet can be discarded.

일 실시 예에서, 테이블 검색 또는 기능 모듈 실행 결과로서 산출되는 인스트럭션은 단일 테이블 또는 단일 기능 모듈 실행을 지정하는 인스트럭션이거나, 다수의 테이블 및/또는 다수의 기능 모듈의 연속된 실행을 요구하는 인스트럭션일 수 있다. 즉, 하나의 인스트럭션이 패킷이 출력 포트로 전송되기 전에 이루어져야 할 모든 테이블 검색 및/또는 기능 모듈 수행을 지정하는 일련의 조합 인스트럭션으로서, 그 지정된 순서에 의해 순차적으로 테이블 검색/기능 모듈의 수행이 이루어지도록 할 수 있다. 본 발명은 이와 같은 처리를 "소스 라우티드 기능 (source routed function)" 처리라 칭한다. In one embodiment, the instructions computed as a result of table lookup or function module execution may be instructions specifying a single table or single function module execution, or may be instructions that require consecutive execution of multiple tables and / or multiple function modules have. That is, as a series of combinational instructions specifying one table search and / or function module execution to be performed before a packet is transmitted to the output port, the table search / function module is sequentially executed according to the specified order . The present invention refers to such a process as a "source routed function" process.

도 4를 다시 참조하면, 테이블간, 기능 모듈간, 또는 테이블과 기능 모듈간에 통신 채널(325)를 통해 전달되는 정보의 예가 도시되어 있다. 도시된 바와 같이, 테이블간, 기능 모듈간, 또는 테이블과 기능 모듈간 전달되는 정보는 도 2에 도시된 정보, 즉, 패킷, 인입포트 정보, 메타데이터 및 액션 집합을 기본적으로 포함하며, 본 발명에 의한 특징적인 정보로서 메시지 필드가 부가될 수 있다. 본 발명은 메시지 필드를 이용하여 지금 수행되는 동작(테이블 검색 또는 기능모듈 실행)의 결과로서 다음 수행될 다음 동작 (또는 동작 리스트)를 지정하는 인스트럭션(Next Table or Function)을 전달할 수 있다. 즉, 단일 테이블 검색 또는 단일 기능 모듈 실행 또는 다수의 테이블 검색 및 다수의 기능 모듈 실행의 연속 수행 조합을 지정하는 인스트럭션을 전달할 수 있다. Referring again to FIG. 4, an example of information transferred between tables, between functional modules, or between a table and functional modules over a communication channel 325 is shown. As shown, the information transferred between the tables, between the functional modules, or between the table and the functional module basically includes the information shown in FIG. 2, that is, the packet, the incoming port information, the metadata and the action set, A message field may be added as the characteristic information by the message field. The present invention can convey an Next Table or Function that specifies the next action (or action list) to be performed next as a result of an action (table lookup or function module execution) performed now using the message field. That is, instructions can be passed that specify a single table lookup or a single function module execution, or a combination of successive runs of multiple table lookups and multiple function module executions.

도 5는 본 발명의 일 실시 예에 따른 네트워크 장치에서 수행되는 패킷 처리 과정을 도시한 흐름도이다. 5 is a flowchart illustrating a packet processing process performed in a network device according to an embodiment of the present invention.

도시된 바와 같이, 패킷이 수신되면(S501), 패킷에 대한 기본적인 처리를 수행하는 엔트리 모듈을 실행시킴으로써 다음 수행할 동작이 테이블 검색인지 기능 모듈 실행인지를 결정한다(S502). As shown in the figure, when a packet is received (S501), an entry module for performing a basic process for a packet is executed to determine whether the next operation to be performed is a table search or a function module execution (S502).

테이블 검색으로 결정된 경우에, 첫 번째 테이블 검색을 수행하여 해당 테이블에 매칭되는 엔트리가 존재하는지 확인한다(S503). 매칭되는 엔트리가 존재하는 경우에는 해당 엔트리에 대한 카운트 정보를 업데이트하며, 인스트럭션에 따른 액션 집합 업데이트, 패킷 헤더 정보 또는 다음 테이블 검색에 사용될 매치 필드 업데이트, 테이블 간 정보 전달에 사용되며 다음 테이블 검색에도 사용될 수 있는 메타데이터 업데이트 등을 수행한다(S504). 매칭되는 엔트리가 존재하지 않는 경우에는 테이블-미스 엔트리(또는 디폴트 엔트리)가 존재하는지 판단하고(S509), 디폴트 엔트리가 존재하는 경우에는 해당 엔트리에 지정된 인스트럭션을 수행하며(S504), 디폴트 엔트리도 존재하지 않는 경우에는 해당 패킷을 폐기할 수 있다(S510). If it is determined that the table is searched, the first table search is performed to check whether there is an entry matched to the corresponding table (S503). If there is an entry to be matched, it updates the count information for the entry, updates the action set according to the instruction, updates the match field to be used for retrieving the packet header information or the next table, is used for transferring information between tables, (Step S504). If there is no matching entry, it is determined whether there is a table-miss entry (or a default entry) (S509). If there is a default entry, the instruction specified in the entry is executed (S504) If not, the corresponding packet can be discarded (S510).

한편, 단계(S502)에서의 판단 결과, 기능 모듈 실행으로 판단된 경우에 첫 번째 기능 모듈 실행이 수행되며(S508), 이에 따라 패킷에 대한 처리로서, 액션 집합 업데이트, 패킷 헤더 정보/매치 필드 업데이트, 메타데이터 업데이트 등이 이루어질 수 있다(S504). As a result of the determination in step S502, if it is determined that the function module is executed, the first function module is executed (S508), and as a process for the packet, an action set update, a packet header information / , Metadata update and the like may be performed (S504).

상기 테이블 검색 결과 또는 기능 모듈 실행의 결과로 "다음 테이블 검색(Goto-Table n) 인스트럭션"이 주어지면 다음 테이블에 대한 검색을 수행하며(S505->S503), "기능 모듈 실행 인스트럭션(Run-Function m)"이 주어지면 인스트럭션에서 지정된 "기능 모듈"을 실행시킨다(S506->S507). 상기 테이블 검색 결과 또는 기능 모듈 실행 결과로는 역시 또다른 테이블 검색이 지정되거나 또다른 기능 모듈 실행이 지정될 수 있으며, 최종적으로 패킷 출력 인스트럭션이 주어질 때까지 일련의 테이블 검색 및/또는 기능 모듈 실행이 수행되어 패킷이 처리될 수 있다.If a "Goto-Table n instruction" is given as a result of the table search result or the execution of the function module, the search for the next table is performed (S505-> S503) m) "is given, the" function module "designated by the instruction is executed (S506-> S507). As a result of the table search result or the execution of the function module, another table search may be designated or another function module execution may be designated, and a series of table search and / or function module execution may be performed until the packet output instruction is finally given And the packet can be processed.

전술한 과정들을 통해 일련의 테이블 검색과 기능 모듈 실행이 수행된 후 더 이상의 테이블 검색이나 실행할 기능 모듈이 지정되지 않은 것으로 판단되면 현재까지 테이블 검색과 기능 모듈 실행을 통해 설정된 액션 집합을 수행한다.After a series of table searches and a function module execution are performed through the above-described processes, if it is determined that a function module to be further retrieved or executed is not designated, the set of actions performed through the table search and the function module execution is performed.

일 실시 예에서, 기능 모듈이 실행된 후 결과로 주어지는 다음 테이블 정보나 다음 기능 모듈 정보는 해당 기능 모듈에 포함되거나, 이전 테이블 검색의 결과로 주어지는 "기능 모듈 실행 인스트럭션"과 함께 전달되는 메시지에 포함될 수 있다. In one embodiment, the next table information or next functional module information given as a result after the functional module is executed may be included in the corresponding functional module or included in the message delivered with the "functional module execution instruction " .

또한, 특정 기능 모듈 실행 및 해당 기능 모듈의 실행 후 검색을 위해 사용될 일련의 테이블 정보 또는 다른 기능 모듈 정보가 하나의 테이블 검색 또는 기능 모듈 실행 결과로 지정될 수 있다. 이와 같은 일련의 테이블 검색 및 기능 모듈 수행을 한꺼번에 지정할 수 있는 하나의 구현 예시로서, "Run-Function x before Goto-Table n", "Run-Function x before Run-Function y"와 같은 형태의 오픈플로우 추가 인스트럭션이 정의될 수 있다. 가령, "Run-Function x before Goto-Table n"은 기능 모듈 x를 수행한 후 테이블 n을 검색 하라는 의미로서 실제적인 명령 수행은 "Run-Function x"에 따른 기능 모듈 x가 실행되며 "Goto-Table n"은 메시지 형태로 기능 모듈 x에 전달되어 기능 모듈 x는 패킷을 처리한 후에 "Goto-Table n" 인스트럭션을 수행하게 된다. In addition, a series of table information or other function module information to be used for execution of a specific function module and retrieval after execution of the corresponding function module may be specified as a result of performing a table search or a function module execution. As an example of the implementation of such a series of table search and function module execution, an open flow of the form "Run-Function x before Goto-Table n & Additional instructions may be defined. For example, "Run-Function x before Goto-Table n" means to search table n after executing function module x. In actual instruction execution, function module x according to "Run-Function x" Table n "is transferred to the function module x in the form of a message, and the function module x executes the" Goto-Table n "instruction after processing the packet.

다른 예로서, "Run-Function x before Run-Function y"는 기능 모듈 x를 실행한 후에 다른 기능 모듈 y를 실행하라는 의미로서, "Run-Function x"에 따른 기능 모듈 x가 먼저 실행되며 "Run-Function y"는 메시지 형태로 기능 모듈 x에 전달된다. 이에 따라, 기능 모듈 x는 패킷 처리 후 "Run-Function y" 인스트럭션을 수행하게 된다. 또한, "Run-Function y" 인스트럭션은 기능 모듈 y 수행 이후에 검색할 테이블 정보 또는 기능 모듈 정보를 조합하여 "Run-Function x before Goto-Table n", "Run-Function x before Run-Function y"와 같은 형태의 인스트럭션으로 확장될 수 있다.As another example, "Run-Function x before Run-Function y" means to execute another function module y after executing the function module x. The function module x according to "Run- -Function y "is transmitted to the function module x in the form of a message. Accordingly, the function module x executes the "Run-Function y" instruction after packet processing. In addition, the "Run-Function y" instruction combines the table information or the function module information to be searched after the execution of the function module y and outputs the "Run-Function x before Goto- And so on.

전술한 예시는 기능 모듈 실행과 더불어 해당 기능 모듈 실행 바로 직후의 테이블 검색 또는 다른 기능 모듈 실행만을 지정하고 인스트럭션에 대하여 설명하였으나, 본 발명의 다른 실시 예에 따르면 여러 개의 연속된 인스트럭션 리스트의 형태 역시 가능하다. 예를 들어, "Run-Function 1->Goto-Table 1->Run-Function 2->Run-Function 3->Goto-Table 2"와 같이 복수의 동작을 지정하는 인스트럭션 리스트 형태로 인스트럭션이 확장될 수 있다. 상기 인스트럭션 리스트는 기능 모듈 1을 실행 후 테이블 1을 검색하고, 다시 기능 모듈 2와 3을 연속 실행한 후 마지막으로 테이블 2를 검색 하도록 지시한다. In the above-described example, the table search or the execution of the other function module is described only for executing the function module immediately after the execution of the corresponding function module. However, according to another embodiment of the present invention, Do. For example, if an instruction is expanded in the form of an instruction list specifying a plurality of operations, such as "Run-Function 1-> Goto-Table 1-> Run-Function 2-> Run-Function 3-> Goto-Table 2" . The instruction list searches the table 1 after executing the function module 1, instructs the function module 2 and 3 to execute again, and finally searches the table 2.

이와 같은 인스트럭션 리스트는 본 발명의 일 예에 불과하며, 임의의 테이블 검색의 결과로 다음 검색할 임의의 테이블 정보, 또는 연속된 검색을 수행할 테이블 리스트, 또는 기능 모듈, 또는 기능 모듈 리스트, 또는 검색할 테이블과 수행할 기능 모듈의 조합 리스트를 수행하게 하는 목적을 달성하기 위한 다른 형태의 인스트럭션 역시 본 발명의 범주에 속한다고 하겠다.Such an instruction list is merely an example of the present invention, and may be any table information to be searched next as a result of an arbitrary table search, a table list, a function module, or a function module list, Other types of instructions for achieving the purpose of performing a combined list of a table to be executed and a function module to be executed are also within the scope of the present invention.

한편, 본 발명에 따른 데이터 플래인에서 플로우 테이블 엔트리의 인스트럭션으로서 상기 구현 예시로 사용된 "Run-Function x before Goto-Table n", "Run-Function x before Run-Function y", 또는 일련의 인스트럭션 리스트인 "Run-Function 1->Goto-Table 1->Run-Function 2->Run-Function 3->Goto-Table 2" 등이 지정될 수 있도록 하기 위해서는 SDN 제어 플래인이 SDN 데이터 플래인에 구현되어 있는 기능 모듈 집합을 미리 확인할 수 있어야 할 것이다. 이는 오픈플로우와 같이 ONF(Open Networking Forum)에서 정의된 OF-Config나 별도 독립적인 프로토콜을 통한 SDN 데이터 플래인과 제어 플래인의 정보 교환으로 가능하다. 본 발명은 SDN 제어 플래인이 데이터 플래인의 기능 모듈 정보를 획득하는 방식에 대해서는 한정하지 않는다. In the meantime, the " Run-Function x before Goto-Table n ", "Run-Function x before Run-Function y ", or a series of instructions In order to be able to specify the list "Run-Function 1-> Goto-Table 1-> Run-Function 2-> Run-Function 3-> Goto-Table 2", the SDN control plane is connected to the SDN data plane You should be able to identify the set of implemented functional modules in advance. This can be achieved by OF-Config defined in the Open Networking Forum (ONF), such as open flow, or by exchanging information between the SDN data plane and the control plane via a separate protocol. The present invention is not limited in how the SDN control plane obtains functional module information of the data plane.

도 6은 본 발명의 일 실시 예에 따른 네트워크 장치에서 기능 모듈과 테이블 검색간 연동되는 동작의 일 예를 도시한다. 도시된 바와 같이, 두 개의 테이블, Table 1(610) 및 Table 2(620)를 포함하는 일련의 테이블 구조에 있어서 첫 번째 테이블(Table 1,610)이 플로우의 굵기(granularity)가 큰 플로우 테이블 (예를 들어, 입력 포트 번호와 4 계층 (TCP or UDP) 목적지 포트 번호를 매치 필드로 갖는 플로우 테이블)이고 두 번째 테이블(Table 2,620)이 마이크로 플로우별 해쉬 테이블(5-tuple, 즉, IP 소스 주소, IP 목적지 주소, 프로토콜 번호, TCP 또는 UDP 소스 포트 번호, TCP 또는 UDP 목적지 포트 번호에 대한 해쉬값을 매치 필드로 갖는 플로우 테이블)이라고 가정한다. 패킷을 처리하기 위하여, 본 발명의 일 실시 예에 따른 네트워크 장치가 첫 번째 테이블(Table1, 610)을 검색 후 패킷의 5-tuple에 대한 해쉬 값을 이용한 마이크로 플로우로 구성된 두 번째 테이블(Table 2, 620)을 검색해서 최종 출력 포트에 대한 정보를 얻고자 한다면, 두 번째 테이블을 검색하기 위한 키로서 5-tuple에 대한 해쉬 값을 필요로 할 것이다. 본 발명에서는 이러한 해쉬 값을 추출하는 동작을 하나의 기능 모듈(630)을 이용하여 정의할 수 있다. 기능 모듈(630)의 실행을 통해 추출된 해쉬 값은 두번째 테이블 검색(620)을 위한 정보 전달시에 메타데이터(metadata) 필드를 통해서 전달될 수 있다.
FIG. 6 illustrates an example of an operation interworking between a function module and a table search in a network device according to an exemplary embodiment of the present invention. As shown in the drawing, a first table (Table 1, 610) in a series of table structures including two tables, Table 1 (610) and Table 2 (620) is a flow table having a large flow granularity A flow table having an input port number and a 4th layer (TCP or UDP) destination port number as a match field) and a second table (Table 2,620) is a microflow-specific hash table 5-tuple A flow table having a destination address, a protocol number, a TCP or UDP source port number, and a hash value for a TCP or UDP destination port number as a match field). In order to process a packet, a network device according to an embodiment of the present invention searches a first table (Table 1, 610), and a second table (Table 2, 620) to obtain information about the final output port, it will need a hash value for the 5-tuple as the key to retrieve the second table. In the present invention, the operation of extracting such a hash value can be defined using one function module 630. [ The hash value extracted through the execution of the function module 630 may be transferred through a metadata field when transmitting information for the second table search 620. [

전술한 바와 같은 본 발명의 실시 예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. The embodiments of the present invention as described above may be implemented in the form of program instructions that can be executed through various computer means and recorded in a computer-readable medium. The computer readable medium may include program instructions, data files, data structures, and the like, alone or in combination.

컴퓨터 판독 가능 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media) 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 또한 상술한 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.Program instructions to be recorded on a computer-readable medium may be those specially designed and constructed for the present invention or may be available to those skilled in the computer software arts. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Includes hardware devices specifically configured to store and execute program instructions such as magneto-optical media and ROM, RAM, flash memory, and the like. The above-mentioned medium may also be a transmission medium such as a light or metal wire, wave guide, etc., including a carrier wave for transmitting a signal designating a program command, a data structure and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like.

상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.

이제까지 본 발명에 대하여 그 실시 예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.The embodiments of the present invention have been described above. It will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. Therefore, the disclosed embodiments should be considered in an illustrative rather than a restrictive sense. The scope of the present invention is defined by the appended claims rather than by the foregoing description, and all differences within the scope of equivalents thereof should be construed as being included in the present invention.

Claims (16)

네트워크 장치에 있어서,
복수의 플로우 테이블;
각각이 패킷에 대한 상이한 처리를 수행하는 복수의 기능 모듈; 및
패킷이 수신되면, 상기 패킷에 대하여 테이블 검색 동작 및 기능 모듈 실행 동작중에서 먼저 수행될 동작을 결정하는 엔트리 기능 모듈을 포함하고,
상기 엔트리 기능 모듈에 의해 결정된 동작의 수행 결과로서 다음 수행될 테이블 검색 또는 기능 모듈 실행 동작이 지정되고, 상기 지정은 상기 패킷에 대한 출력 인스트럭션이 주어질 때까지 반복되는 네트워크 장치.
In a network device,
A plurality of flow tables;
A plurality of functional modules, each of which performs different processing for this packet; And
And an entry function module that, when a packet is received, determines an operation to be performed first among the table search operation and the function module execution operation for the packet,
Wherein the table search or function module execution operation to be performed next is designated as a result of performing the operation determined by the entry function module, and the designation is repeated until an output instruction for the packet is given.
제1항에 있어서, 상기 기능 모듈은 상기 기능 모듈이 실행된 후에 다음 수행될 수행될 동작 정보를 포함하는 네트워크 장치.The network device according to claim 1, wherein the function module includes operation information to be performed next after the function module is executed. 제1항에 있어서, 상기 테이블 검색 동작이 수행된 경우에 다음 수행될 동작은 상기 패킷에 매칭된 플로우 엔트리에 포함된 인스트럭션에 의해 지정되는 네트워크 장치.The network device according to claim 1, wherein the operation to be performed next when the table search operation is performed is specified by an instruction included in a flow entry matched with the packet. 제3항에 있어서, 상기 인스트럭션은 오픈플로우 채널 또는 그와 유사한 기능을 수행하는 제어채널을 통해 제어기에 의해 설정되는 네트워크 장치. 4. The network device according to claim 3, wherein the instruction is set by a controller via a control channel performing an open-flow channel or a similar function. 제3항에 있어서,
상기 인스트럭션은 다음 수행될 하나 이상의 테이블 검색 또는 하나 이상의 기능 모듈 실행을 지정하는 네트워크 장치.
The method of claim 3,
Wherein the instructions specify searching for one or more tables to be performed next or executing one or more function modules.
제3항에 있어서, 상기 인스트럭션은 다음 수행될 기능 모듈 실행 동작과 함께 상기 기능 모듈 실행에 후속하여 수행될 다른 기능 모듈 실행 또는 다른 테이블 검색을 지정하는 네트워크 장치.4. The network device according to claim 3, wherein the instruction specifies execution of another function module to be performed subsequent to execution of the function module, or search of another table, together with a function module execution operation to be performed next. 제3항에 있어서, 상기 인스트럭션은 다음 수행될 일련의 조합된 테이블 검색 및 기능 모듈 실행 동작 리스트를 지정하는 네트워크 장치.4. The network device according to claim 3, wherein the instruction specifies a series of combined table lookup and function module execution action lists to be performed next. 제1항에 있어서, 상기 엔트리 기능 모듈에 의해 결정된 동작이 테이블 검색인 경우에 상기 복수의 플로우 테이블중 첫번째 플로우 테이블 검색이 수행되는 네트워크 장치.The network device according to claim 1, wherein when the operation determined by the entry function module is a table search, a first flow table search among the plurality of flow tables is performed. 제1항에 있어서, 상기 엔트리 기능 모듈에 의해 결정된 동작이 기능 모듈 실행인 경우에 상기 복수의 기능 모듈중 첫번째 기능 모듈이 실행되는 네트워크 장치.The network device according to claim 1, wherein when the operation determined by the entry function module is a function module execution, the first function module of the plurality of function modules is executed. 복수의 플로우 테이블, 엔트리 모듈 및 복수의 기능 모듈을 구비하는 네트워크 장치에서 패킷을 처리하는 방법에 있어서, 상기 방법은,
패킷을 수신하는 단계;
상기 엔트리 모듈을 실행함으로써 상기 수신된 패킷에 대해 다음 수행될 동작으로서 테이블 검색 또는 기능 모듈 실행을 결정하는 단계;
상기 결정된 테이블 검색 또는 기능 모듈 실행을 수행함으로써 상기 패킷을 처리하는 단계; 및
상기 테이블 검색 또는 상기 기능 모듈 실행의 결과로서 지정되는 다른 테이블 검색 또는 다른 기능 모듈 실행 동작을 수행함으로써 상기 패킷을 후속 처리하는 단계를 포함하되,
상기 다른 테이블 검색 또는 상기 다른 기능 모듈의 실행 결과로서 또 다른 테이블 검색 또는 또 다른 기능 모듈 실행 동작이 지정될 수 있으며, 상기 지정은 상기 패킷에 대한 출력 인스트럭션이 주어질 때까지 반복되는 방법.
A method for processing a packet in a network device having a plurality of flow tables, an entry module and a plurality of function modules,
Receiving a packet;
Determining a table search or function module execution as an operation to be performed next for the received packet by executing the entry module;
Processing the packet by performing the determined table search or function module execution; And
Further processing the packet by performing another table search or other function module execution operation designated as a result of the table search or the function module execution,
Wherein another table search or another function module execution operation can be designated as a result of the other table search or the execution of the other function module, and the designation is repeated until an output instruction for the packet is given.
제10항에 있어서, 상기 기능 모듈은 상기 기능 모듈이 실행된 후에 다음 수행될 수행될 동작 정보를 포함하는 방법.11. The method of claim 10, wherein the functional module comprises operational information to be performed next after the functional module is executed. 제10항에 있어서, 상기 테이블 검색의 결과로서 지정되는 다음 수행 동작은 상기 패킷에 매칭된 플로우 엔트리에 포함된 인스트럭션에 의해 지정되는 방법.11. The method of claim 10, wherein the next performing operation specified as a result of the table lookup is specified by instructions contained in a flow entry matched to the packet. 제10항에 있어서, 상기 인스트럭션은 오픈플로우 채널 또는 그와 유사한 기능을 수행하는 제어 채널을 통해 제어기에 의해 설정되는 방법.11. The method of claim 10, wherein the instructions are set by a controller via a control channel that performs an open-flow channel or a similar function. 제12항에 있어서,
상기 인스트럭션은 다음 수행될 하나 이상의 테이블 검색 또는 하나 이상의 기능 모듈 실행을 지정하는 방법.
13. The method of claim 12,
Wherein the instructions specify searching for one or more tables to be performed next or executing one or more function modules.
제12항에 있어서, 상기 인스트럭션은 다음 수행될 기능 모듈 실행과 함께 상기 기능 모듈 실행에 후속하여 수행될 다른 기능 모듈 실행 또는 다른 테이블 검색을 함께 지정하는 방법.13. The method of claim 12, wherein the instructions specify execution of another function module to be performed subsequent to execution of the function module together with execution of the next function module to be performed. 제12항에 있어서, 상기 인스트럭션은 다음 수행될 일련의 조합된 테이블 검색 및 기능 모듈 실행 동작 리스트를 지정하는 방법.13. The method of claim 12, wherein the instructions specify a set of combined table lookup and function module execution action lists to be performed next.
KR1020140104472A 2013-11-14 2014-08-12 SDN-based Network Device with extended function and method of processing a packet in the same device KR102193371B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/536,831 US9577924B2 (en) 2013-11-14 2014-11-10 SDN-based network device with extended function and method of processing packet in the same device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020130138660 2013-11-14
KR20130138660 2013-11-14

Publications (2)

Publication Number Publication Date
KR20150056035A true KR20150056035A (en) 2015-05-22
KR102193371B1 KR102193371B1 (en) 2020-12-21

Family

ID=53391463

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140104472A KR102193371B1 (en) 2013-11-14 2014-08-12 SDN-based Network Device with extended function and method of processing a packet in the same device

Country Status (1)

Country Link
KR (1) KR102193371B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101674169B1 (en) * 2015-08-17 2016-11-08 성균관대학교산학협력단 Openflow switch and management methid of flow table

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110261825A1 (en) * 2009-03-09 2011-10-27 Nec Corporation OpenFlow COMMUNICATION SYSTEM AND OpenFlow COMMUNICATION METHOD
KR20130050356A (en) * 2010-09-08 2013-05-15 닛본 덴끼 가부시끼가이샤 Switching system, switching control method, and memory medium

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110261825A1 (en) * 2009-03-09 2011-10-27 Nec Corporation OpenFlow COMMUNICATION SYSTEM AND OpenFlow COMMUNICATION METHOD
KR20130050356A (en) * 2010-09-08 2013-05-15 닛본 덴끼 가부시끼가이샤 Switching system, switching control method, and memory medium

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101674169B1 (en) * 2015-08-17 2016-11-08 성균관대학교산학협력단 Openflow switch and management methid of flow table

Also Published As

Publication number Publication date
KR102193371B1 (en) 2020-12-21

Similar Documents

Publication Publication Date Title
US9577924B2 (en) SDN-based network device with extended function and method of processing packet in the same device
US10277510B2 (en) System and method for storing lookup request rules in multiple memories
CN104823416B (en) The device and method for realizing the message sequence in the software defined network of OpenFlow
EP2993836A1 (en) Method and device for routing data message
CN104012063A (en) Controller for flexible and extensible flow processing in software-defined networks
CN103004158A (en) Network device with a programmable core
WO2016128834A1 (en) Method and system for identifying an outgoing interface using openflow protocol
JP5993817B2 (en) Routing system and method in carrier network
EP3136662B1 (en) Construction method, device and system for multi-path forwarding rules
CN111801911B (en) Traffic function chain congestion tracking
US11398981B2 (en) Path creation method and device for network on chip and electronic apparatus
US20180219776A1 (en) Packet processing method and apparatus
CN106105098A (en) Switch and the processing method of service request message
CN103534991A (en) Packet forwarding method and apparatus
KR20150056035A (en) SDN-based Network Device with extended function and method of processing a packet in the same device
US9667533B2 (en) Creating and utilizing customized network applications
EP3166273B1 (en) Method and system for processing service node ability
JP2013141140A (en) Communication device and program for communication device
CN111147379A (en) Data transmission method, system and related equipment
US8837474B2 (en) Apparatus and methods for efficient network address translation and application level gateway processing
CN115514702A (en) Method and device for quickly switching link, electronic equipment and storage medium
US9912581B2 (en) Flow inheritance
CN113497755B (en) Data forwarding method, system and equipment
CN112367251A (en) Forwarding information base table item detection method, detection equipment and network equipment
CN112187822A (en) Safety monitoring method and device in tunnel transmission

Legal Events

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