KR101746105B1 - Openflow switch capable of service chaining - Google Patents

Openflow switch capable of service chaining Download PDF

Info

Publication number
KR101746105B1
KR101746105B1 KR1020150044610A KR20150044610A KR101746105B1 KR 101746105 B1 KR101746105 B1 KR 101746105B1 KR 1020150044610 A KR1020150044610 A KR 1020150044610A KR 20150044610 A KR20150044610 A KR 20150044610A KR 101746105 B1 KR101746105 B1 KR 101746105B1
Authority
KR
South Korea
Prior art keywords
flow
switch
packet
entry
controller
Prior art date
Application number
KR1020150044610A
Other languages
Korean (ko)
Other versions
KR20160116622A (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 KR1020150044610A priority Critical patent/KR101746105B1/en
Publication of KR20160116622A publication Critical patent/KR20160116622A/en
Application granted granted Critical
Publication of KR101746105B1 publication Critical patent/KR101746105B1/en

Links

Images

Classifications

    • 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/20Support for services
    • H04L49/205Quality of Service based
    • 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

Abstract

본 발명은 SDN(Software Defined Network) 기반의 네트워크에서 서비스 체이닝을 제공하는 방법에 관한 것으로, 서비스 마다 최적화된 네트워크 경로를 제공하며, 트래픽 상태에 따라 네트워크 기능을 가변적으로 제공하며, 관리가 편리하며, 동적으로 서비스 체이닝을 구현하며, 운용의 자동화를 구현하고, 오픈플로우 스위치의 플로우 테이블의 크기를 줄이며, 엔트리 검색 시간을 단축시킬 수 있는 서비스 체이닝 방법에 관한 것이다.The present invention relates to a method for providing service chaining in a network based on SDN (Software Defined Network), which provides optimized network paths for each service, variably provides network functions according to traffic conditions, To a service chaining method capable of dynamically implementing service chaining, implementing automation of operation, reducing the size of a flow table of an open flow switch, and shortening an entry search time.

Description

서비스 체이닝이 가능한 오픈플로우 스위치{OPENFLOW SWITCH CAPABLE OF SERVICE CHAINING}[0001] OPEN FLOW SWITCH CAPABLE OF SERVICE CHAINING [0002]

본 발명은 SDN(Software Defined Network) 기반의 네트워크에서 서비스 체이닝을 제공하는 방법에 관한 것으로, 서비스 마다 최적화된 네트워크 경로를 제공하며, 트래픽 상태에 따라 네트워크 기능을 가변적으로 제공하며, 관리가 편리하며, 동적으로 서비스 체이닝을 구현하며, 운용의 자동화를 구현하고, 오픈플로우 스위치의 플로우 테이블의 크기를 줄이며, 엔트리 검색 시간을 단축시킬 수 있는 서비스 체이닝 방법에 관한 것이다.The present invention relates to a method for providing service chaining in a network based on SDN (Software Defined Network), which provides optimized network paths for each service, variably provides network functions according to traffic conditions, To a service chaining method capable of dynamically implementing service chaining, implementing automation of operation, reducing the size of a flow table of an open flow switch, and shortening an entry search time.

기존 네트워크의 경우, 서비스 호스팅 시 네트워크 경로가 정적으로 설정되어, 네트워크의 상태 변화에 따라 사람이 일일이 수동으로 망을 재구성해야 한다. 이와 같은 일련의 과정은 매우 복잡하다. 특히 서비스 체이닝과 같이 개별 서비스마다 특화된 네트워크를 구성하고 이를 관리하는 경우, 그 과정이 매우 복잡하기 때문에 서비스 마다 최적화된 네트워크를 제공하는 것은 불가능에 가깝다.In the case of an existing network, the network path is set to be static when the service is hosted, and the person must manually reconfigure the network manually according to the change of the network status. This series of processes is very complex. In particular, when a specialized network is configured and managed for each service, such as service chaining, the process is very complicated and it is almost impossible to provide an optimized network for each service.

사용자 마다 서비스 체이닝을 제공하는 경우, 사용자 마다의 플로우 엔트리를 관리해야 한다. 이 경우 구간마다 제어기로의 트래픽(패킷-인 메시지)이 발생하고, 필요시 vLAN 스와핑(swapping) 해야할 경우도 있다. 이에 성능상의 오버헤드가 발생하고, 문제 발생시 디버깅에 곤란한 면이 있다. 또한 모든 사용자의 IP나 vLAN등의 조합으로 포워딩 테이블(플로우 테이블)을 관리하므로, 포워딩 테이블의 크기가 매우 커야만 했다. 오픈플로우 스위치의 테이블 사이즈에 제한이 있는 경우, 지원 가능한 사용자와 서비스의 수가 제한될 수도 있다. 또한 사용가능한 네트워크 기능(NF; Network Function)의 수가 증가할 경우, 단일 스위치로 제공 가능한 서비스와 사용자 수에 한계가 있다.If service chaining is provided for each user, the flow entry for each user must be managed. In this case, traffic to the controller (packet-in message) occurs every interval and vLAN swapping may be required if necessary. There is a problem in performance overhead and debugging when a problem occurs. Also, since the forwarding table (flow table) is managed by a combination of all users' IPs or vLANs, the size of the forwarding table has to be very large. If the table size of the open flow switch is limited, the number of users and services that can be supported may be limited. Also, when the number of available network functions (NF) increases, there is a limit to the number of services and users that can be provided by a single switch.

1. OpenFlow Switch Specification version 1.4.0(Wire Protocol 0x05), October 14, 2013 [https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-spec-v1.4.0.pdf]1. OpenFlow Switch Specification version 1.4.0 (Wire Protocol 0x05), October 14, 2013 [https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-spec- v1.4.0.pdf] 2. Software-Defined Networking: The New Norm for Netwrks, ONF White Paper, April 13, 2012 [https://www.opennetworking.org/images/stories/downloads/sdn-resources/white-papers/wp-sdn-newnorm.pdf]2. Software-Defined Networking: The New Norm for Netwrks, ONF White Paper, April 13, 2012 [https://www.opennetworking.org/images/stories/downloads/sdn-resources/white-papers/wp-sdn- newnorm.pdf] 3. ETSI GS NFV 002 v1.1.1 (2013-10)3. ETSI GS NFV 002 v1.1.1 (2013-10) [http://www.etsi.org/deliver/etsi_gs/NFV/001_099/002/01.01.01_60/gs_NFV002v010101p.pdf][http://www.etsi.org/deliver/etsi_gs/NFV/001_099/002/01.01.01_60/gs_NFV002v010101p.pdf]

본 발명의 목적은 서비스 체인닝에 필요한 테이블의 크기를 최소화할 수 있는 서비스 체이닝 제공 방법을 제공하는 데 있다. 아울러 개별 사용자 마다의 서비스 체인 룰을 적용하는 것이 아닌, 각각의 서비스 체인 리스트(NF 리스트; NFv 리스트)에 아이디를 적용 및 관리하여, 서비스 체이닝 룰이 보다 쉽고 효율적으로 기능하도록 한다.An object of the present invention is to provide a service chaining providing method capable of minimizing the size of a table necessary for service chaining. In addition, the service chain rule is applied and managed to each service chain list (NF list: NFv list), rather than applying the service chain rule for each individual user, so that the service chaining rule functions more easily and efficiently.

또한, SDN을 활용하여 서비스 제공자와 사용자의 서비스 레벨 규약(Service Level Agreement)에 따라 최적화된 네트워크 경로를 제공하는 SDN 기반 네트워크의 서비스 체이닝 방법을 제공하는 데 있다.In addition, the present invention provides a service chaining method of an SDN-based network that provides an optimized network path in accordance with a service level agreement (Service Level Agreement) between a service provider and a user utilizing an SDN.

이를 통해 네트워크의 상태 변화, 서비스 별 또는 사용자 별 SLA에 따라 동적으로 망을 운영하여, 사용자에게 하여금 최적의 서비스를 제공하고, 망 사업자 입장에서는 이러한 시스템이 자동적으로 운용될 수 있도록 하며, 이동 통신망을 사용하지 않더라도 서비스의 종류 및 사용량 등에 따라 쉽게 과금할 수 있도록 하는데 있다.Through this, it is possible to dynamically operate the network according to the change of the state of the network, service or SLA according to the user, thereby providing the optimal service to the user, enabling the system to be operated automatically by the network operator, It is possible to easily charge according to the type and usage of the service even if it is not used.

본 발명에 따른 서비스 체이닝 제공 방법은, NF(Netwrok Function; 네트워크 기능) 서비스를 제공하는 NF 노드를 포함하는 NF 그룹으로 패킷을 포워딩하는 오픈플로우(openflow) 스위치에서 서비스 체이닝 제공 방법으로서,상기 오픈플로우 스위치에서 처리할 패킷에 서비스 체인 아이디에 대응하는 플로우 정보가 있는지 판단하는 단계; 및 상기 처리할 패킷의 상기 서비스 체인 아이디에 대응하는 플로우 정보가 있는 경우, 상기 플로우 정보에 대응하는 인스트럭션을 처리하는 단계를 포함하며, 상기 서비스 체인 아이디는 NF 서비스들의 종류 및 순서가 정의된 NF 리스트와 대응할 수 있다.A method of providing service chaining according to the present invention is a service chaining providing method in an open flow switch for forwarding a packet to an NF group including an NF node providing NF (Network Function) Determining whether a packet to be processed by the switch includes flow information corresponding to a service chain ID; And processing the instruction corresponding to the flow information when there is flow information corresponding to the service chain ID of the packet to be processed, wherein the service chain ID includes an NF list .

또한, 상기 서비스 체인 아이디에 대응하는 플로우 정보는 상기 처리할 패킷이 유입되는 포트 정보에 기초하여 업데이트될 수 있는 오더 아이디를 더 포함하고, 상기 인스트럭션 처리 단계는, 상기 처리할 패킷의 상기 서비스 체인 아이디 및 상기 오더 아이디에 대응하는 플로우 정보에 대응하는 액션을 처리하는 단계를 포함할 수 있다.In addition, the flow information corresponding to the service chain ID may further include an order ID that can be updated based on port information on which the packet to be processed flows, and the instruction processing step includes: And processing an action corresponding to the flow information corresponding to the order ID.

또한, 상기 처리할 패킷이 유입되는 포트가 NF 그룹과 직접 연결되어 있는 다른 오픈플로우 스위치와 연결된 포트인 경우, 상기 오더 아이디를 업데이트하는 단계를 더 포함할 수 있다.The method may further include updating the order ID when the port to which the packet to be processed flows is a port connected to another open flow switch directly connected to the NF group.

또한, 상기 오더 아이디 업데이트 단계는, NF 리스트와 관련된 NF 서비스가 하나의 오픈플로우 스위치에 있는 경우, 상기 오더 아이디 업데이트를 제외하는 단계를 포함할 수 있다.The order ID update step may include the step of excluding the order ID update when the NF service associated with the NF list is in one open flow switch.

또한, 상기 인스트럭션 및 상기 오더 아이디 업데이트 중 적어도 하나와 관련된 복수의 플로우 엔트리 중 적어도 하나의 플로우 엔트리는 상기 오픈플로우 스위치를 제어하는 제어기로부터 상기 처리할 패킷이 유입되기 전에 존재할 수 있다.In addition, at least one of the plurality of flow entries associated with at least one of the instruction and the order ID update may be present before the packet to be processed is received from the controller controlling the open flow switch.

또한, 상기 적어도 하나의 플로우 엔트리는 상기 제어기로부터 삭제 명령 메시지를 받은 경우에만 플로우 테이블에서 삭제될 수 있다.In addition, the at least one flow entry may be deleted from the flow table only if it receives a delete command message from the controller.

또한, 상기 플로우 엔트리가 기설정된 사용률 보다 낮은 사용률을 가지는 경우, 상기 제어기로 상기 저사용 엔트리 정보를 전송하는 단계를 더 포함할 수 있다.The method may further include transmitting the low-use entry information to the controller when the flow entry has a lower utilization than a predetermined usage rate.

또한, 상기 제어기로부터 상기 저사용률 플로우 엔트리 변경 메시지를 받는 단계; 및 상기 저사용률 플로우 엔트리 변경 메시지에 대응하는 저사용률 플로우 엔트리가 유입된 패킷과 일정시간 이상 매칭되지 않으면, 상기 저사용률 플로우 엔트리를 파기하는 단계를 더 포함할 수 있다.Receiving the low utilization rate flow change message from the controller; And discarding the low utilization flow entry if the low utilization flow entry corresponding to the low utilization processing flow entry change message does not match the incoming packet for a predetermined time or more.

또한, 상기 서비스 체인 아이디에 대응하는 플로우 정보가 없는 경우, 상기 오픈플로우 스위치를 제어하는 제어기로 상기 처리할 패킷을 포워딩할 수 있다.In addition, when there is no flow information corresponding to the service chain ID, the packet to be processed can be forwarded to the controller that controls the open flow switch.

또한, 상기 NF 그룹은 상기 오픈플로우 스위치의 논리 포트에 연결되어 적어도 네트워크 상태에 기초하여 해당 NF 노드의 개수가 조정될 수 있다.Also, the NF group may be connected to the logical port of the open flow switch so that the number of NF nodes may be adjusted based on at least a network state.

또한, 상기 서비스 체인 아이디와 대응하는 플로우 엔트리 필드는 메타데이터(metadata) 필드의 적어도 일부일 수 있다.Also, the flow entry field corresponding to the service chain ID may be at least a part of a metadata field.

또한, 상기 서비스 체인 아이디는 사용자 및 요청 서비스 종류 중 적어도 하나에 기초하여 결정될 수 있다.In addition, the service chain identity may be determined based on at least one of a user and a requested service type.

본 발명에 따른 오픈플로우 스위치는, NF(Netwrok Function; 네트워크 기능) 서비스를 제공하는 NF 노드를 포함하는 NF 그룹으로 패킷을 포워딩하는 오픈플로우(openflow) 스위치로서, 다른 스위치 및 네트워크 디바이스 중 적어도 하나와 통신하는 포트부; 상기 오픈플로우 스위치를 제어하는 제어기와 통신하는 제어기 통신부; 플로우 테이블, 그룹 테이블, 및 미터 테이블 중 적어도 플로우 테이블을 구비하는 테이블 저장하는 저장부; 및 수신 패킷으로부터 플로우 정보를 추출하여 상기 테이블에 상기 추출된 플로우 정보가 존재하는 엔트리를 검색하고, 상기 검색된 엔트리에 기술된 절차에 따라 플로우의 액션을 처리하고, 상기 플로우 처리 모듈에 의해 처리된 패킷을 지정한 포트로 출력하는 제어부를 포함하고, 상기 제어부는, 상기 수신 패킷에 대한 서비스 체인 아이디에 대응하는 플로우 정보가 있는지 판단하는 플로우 검색 모듈; 및 상기 처리할 패킷의 상기 서비스 체인 아이디에 대응하는 플로우 정보가 있는 경우, 상기 플로우 정보에 대응하는 인스트럭션을 처리하는 플로우 처리 모듈를 포함하고, 상기 서비스 체인 아이디는 NF 서비스들의 종류 및 순서가 정의된 NF 리스트와 대응할 수 있다.An open-flow switch according to the present invention is an open-flow switch for forwarding packets to an NF group including an NF node providing a NF (Network Function) service, A communicating port portion; A controller communicating with a controller that controls the open flow switch; A storage unit for storing a table having at least a flow table among a flow table, a group table, and a meter table; And processing the flow of the action according to the procedure described in the retrieved entry, and transmitting the packet processed by the flow processing module To the designated port, wherein the control unit comprises: a flow search module for determining whether there is flow information corresponding to a service chain ID for the received packet; And a flow processing module for processing an instruction corresponding to the flow information when there is flow information corresponding to the service chain ID of the packet to be processed, wherein the service chain ID includes an NF service type and an NF It can correspond to a list.

또한, 상기 서비스 체인 아이디에 대응하는 플로우 정보는 상기 처리할 패킷이 유입되는 포트 정보에 기초하여 업데이트될 수 있는 오더 아이디를 더 포함하고, 상기 인스트럭션 처리는, 상기 처리할 패킷의 상기 서비스 체인 아이디 및 상기 오더 아이디에 대응하는 플로우 정보에 대응하는 액션을 처리하는 것을 포함할 수 있다.Further, the flow information corresponding to the service chain ID further includes an order ID that can be updated based on the port information on which the packet to be processed flows, and the instruction processing is performed based on the service chain ID of the packet to be processed, And processing an action corresponding to the flow information corresponding to the order ID.

또한, 상기 플로우 처리 모듈은 상기 처리할 패킷이 유입되는 포트가 NF 그룹과 직접 연결되어 있는 다른 오픈플로우 스위치와 연결된 포트인 경우, 상기 오더 아이디를 업데이트할 수 있다.The flow processing module may update the order ID when the port to which the packet to be processed flows is a port connected to another open flow switch directly connected to the NF group.

또한, 상기 오더 아이디 업데이트는, NF 리스트와 관련된 NF 서비스가 하나의 오픈플로우 스위치에 있는 경우, 상기 오더 아이디 업데이트를 제외할 수 있다.In addition, the order ID update may exclude the order ID update when the NF service associated with the NF list is in one open flow switch.

또한, 상기 인스트럭션 및 상기 오더 아이디 업데이트 중 적어도 하나와 관련된 복수의 플로우 엔트리 중 적어도 하나의 플로우 엔트리는 상기 오픈플로우 스위치를 제어하는 제어기로부터 상기 처리할 패킷이 유입되기 전에 존재할 수 있다.In addition, at least one of the plurality of flow entries associated with at least one of the instruction and the order ID update may be present before the packet to be processed is received from the controller controlling the open flow switch.

또한, 상기 적어도 하나의 플로우 엔트리는 상기 제어기로부터 삭제 명령 메시지를 받은 경우에만 플로우 테이블에서 삭제될 수 있다.In addition, the at least one flow entry may be deleted from the flow table only if it receives a delete command message from the controller.

또한, 상기 제어부는, 상기 플로우 엔트리가 기설정된 사용률 보다 낮은 사용률을 가지는 경우, 상기 제어기로 상기 저사용 엔트리 정보를 전송할 수 있다.In addition, the controller may transmit the low-use entry information to the controller when the flow entry has a usage rate lower than a predetermined usage rate.

또한, 상기 제어기로부터 상기 저사용률 플로우 엔트리 변경 메시지를 수신하는 제어기 통신부를 더 포함하고, 상기 제어부는 상기 저사용률 플로우 엔트리 변경 메시지에 대응하는 저사용률 플로우 엔트리가 유입된 패킷과 일정시간 이상 매칭되지 않으면, 상기 저사용률 플로우 엔트리를 파기할 수 있다.The method may further include a controller communication unit for receiving the low utilization rate flow change message from the controller, wherein the controller is configured to compare the low utilization rate flow entry message with the low utilization rate flow entry message, , The low utilization rate flow entry can be discarded.

또한, 상기 제어부는, 상기 서비스 체인 아이디에 대응하는 플로우 정보가 없는 경우, 상기 오픈플로우 스위치를 제어하는 제어기로 상기 처리할 패킷을 포워딩할 수 있다.In addition, when there is no flow information corresponding to the service chain ID, the control unit may forward the packet to be processed to the controller that controls the open flow switch.

또한, 상기 NF 그룹은 상기 오픈플로우 스위치의 논리 포트에 연결되어 적어도 네트워크 상태에 기초하여 해당 NF 노드의 개수가 조정될 수 있다.Also, the NF group may be connected to the logical port of the open flow switch so that the number of NF nodes may be adjusted based on at least a network state.

또한, 상기 서비스 체인 아이디와 대응하는 플로우 엔트리 필드는 메타데이터(metadata) 필드의 적어도 일부인 것을 특징으로 할 수 있다.In addition, the flow entry field corresponding to the service chain ID is at least a part of a metadata field.

또한, 상기 서비스 체인 아이디는 사용자 및 요청 서비스 종류 중 적어도 하나에 기초하여 결정되는 것을 특징으로 할 수 있다.In addition, the service chain ID is determined based on at least one of a user and a requested service type.

또한, 상기 포트부는 가상화된 논리 포트를 더 포함하고, 상기 제어부는 상기 플로우 처리 모듈에 의해 처리된 패킷을 상기 플로우 처리 모듈에서 지정한 상기 포트부의 적어도 하나의 포트로 출력하는 패킷 처리 모듈을 더 포함하고, 상기 NF 그룹은 복수의 NF 노드를 구비하고, 상기 패킷 처리 모듈은, 상기 논리 포트에서 유입되는 패킷을 상기 복수의 NF 노드 중 어느 하나로 전달하는 발산 유닛; 및 상기 복수의 NF 노드 중 어느 하나로부터 유입되는 패킷을 상기 논리 포트로 전달하는 수렴 유닛을 구비할 수 있다.The port unit may further include a virtualized logical port, and the control unit may further include a packet processing module for outputting the packet processed by the flow processing module to at least one port of the port unit designated by the flow processing module , The NF group includes a plurality of NF nodes, and the packet processing module includes: a divergence unit for transmitting a packet received from the logical port to one of the plurality of NF nodes; And a convergence unit for transmitting a packet received from any one of the plurality of NF nodes to the logical port.

또한, 상기 발산 유닛은 상기 논리 포트에서 유입되는 패킷을 포트의 연결 상태 및 트래픽 상태 중 적어도 하나를 고려하여 상기 복수의 NF 노드 중 어느 하나로 전달할 수 있다.In addition, the diverting unit may transmit a packet received from the logical port to one of the plurality of NF nodes in consideration of at least one of a connection state and a traffic state of the port.

또한, 상기 복수의 NF 노드는 트래픽 상태에 따라 개수가 조정될 수 있다.In addition, the number of the NF nodes may be adjusted according to the traffic state.

본 발명에 따른 제어 방법은, NF(Network Fnuction) 서비스를 제공하는 NF 노드를 구비하는 NF 그룹으로 패킷을 포워딩하는 적어도 하나의 오픈플로우(openflow) 스위치를 제어하는 제어기의 제어 방법으로서, 상기 적어도 하나의 오픈플로우 스위치에 연결되어 있는 복수의 NF 그룹의 토폴로지 정보를 구축하는 단계; 상기 복수의 NF 그룹의 종류 및 순서에 대응하는 NF 리스트들을 구비하는 NF 리스트 그룹 및 상기 NF 리스트 그룹의 각각의 NF 리스트와 각기 대응하는 복수의 서비스 체인 아이디를 생성하는 단계; 및 상기 토폴로지 정보에 기초하여 상기 복수의 NF 리스트에 대응하는 경로로 패킷이 이동되도록 하는 복수의 엔트리를 생성하는 단계를 포함할 수 있다.A control method according to the present invention is a control method of a controller for controlling at least one open flow switch for forwarding a packet to an NF group having an NF node providing an NF (Network Fuction) service, Constructing topology information of a plurality of NF groups connected to the open flow switch of the NF group; Generating a plurality of NF list groups having NF lists corresponding to the types and order of the plurality of NF groups and a plurality of service chain IDs respectively corresponding to NF lists of the NF list groups; And generating a plurality of entries such that the packet is moved to a path corresponding to the plurality of NF lists based on the topology information.

또한, 상기 복수의 엔트리 중 적어도 하나가 상기 오픈플로우 스위치로부터 패킷 문의 메시지를 수신하기 전에, 상기 오픈플로우 스위치에 등록되도록 하는 메시지를 생성하여 상기 오픈플로우 스위치로 전송하는 단계를 더 포함할 수 있다.The method may further include generating a message to be registered in the open flow switch and transmitting the message to the open flow switch before at least one of the plurality of entries receives a packet inquiry message from the open flow switch.

또한, 상기 오픈플로우 스위치로부터 수신한 상기 오픈플로우 스위치에 유입된 패킷에 대한 제어 요청 메시지에 구비된 상기 유입 패킷의 정보에 기초하여, 상기 복수의 서비스 체인 아이디 중 어느 한 체인 아이디를 선택하는 단계; 및 상기 선택된 체인 아이디를 상기 유입 패킷에 연관되도록 하는 단계를 더 포함할 수 있다.Selecting one of the plurality of service chain IDs based on the information of the incoming packet included in the control request message for the packet received from the open flow switch; And associating the selected chain ID with the incoming packet.

또한, 상기 복수의 엔트리 중 적어도 하나는 타임아웃 필드가 최고값 또는 0인 것을 특징으로 할 수 있다.In addition, at least one of the plurality of entries may have a timeout field of a maximum value or zero.

본 발명에 따른 제어기는, NF(Network Fnuction) 서비스를 제공하는 NF 노드를 구비하는 NF 그룹으로 패킷을 포워딩하는 적어도 하나의 오픈플로우(openflow) 스위치를 제어하는 제어기로서, 상기 적어도 하나의 오픈플로우 스위치와 통신하는 스위치 통신부; 및 상기 적어도 하나의 오픈플로우 스위치에 연결되어 있는 복수의 NF 그룹의 토폴로지 정보를 구축하는 제어부를 포함하고, 상기 제어부는, 상기 복수의 NF 그룹의 종류 및 순서에 대응하는 NF 리스트들을 구비하는 NF 리스트 그룹 및 상기 NF 리스트 그룹의 각각의 NF 리스트와 각기 대응하는 복수의 서비스 체인 아이디를 생성할 수 있다.The controller according to the present invention is a controller for controlling at least one open flow switch for forwarding a packet to an NF group having an NF node providing an NF (Network Fuction) service, wherein the at least one open flow switch A switch communication unit for communicating with the switch; And a control unit for constructing topology information of a plurality of NF groups connected to the at least one open flow switch, wherein the control unit comprises: an NF list having NF lists corresponding to the types and order of the plurality of NF groups; And a plurality of service chain IDs corresponding to the respective NF lists of the NF list groups.

또한, 상기 제어부는 상기 토폴로지 정보에 기초하여 상기 복수의 NF 리스트에 대응하는 경로로 패킷이 이동되도록 하는 복수의 엔트리를 생성할 있다.Also, the control unit generates a plurality of entries for moving the packet to a path corresponding to the plurality of NF lists based on the topology information.

또한, 상기 제어부는 상기 복수의 엔트리 중 적어도 하나가 상기 오픈플로우 스위치로부터 패킷 문의 메시지를 수신하기 전에, 상기 오픈플로우 스위치에 등록되도록 하는 메시지를 생성하여 상기 오픈플로우 스위치로 전송할 수 있다.Also, the control unit may generate a message to be registered in the open flow switch and transmit the generated message to the open flow switch before at least one of the plurality of entries receives the packet inquiry message from the open flow switch.

또한, 상기 제어부는 상기 오픈플로우 스위치로부터 수신한 상기 오픈플로우 스위치에 유입된 패킷에 대한 제어 요청 메시지에 구비된 상기 유입 패킷의 정보에 기초하여, 상기 복수의 서비스 체인 아이디 중 어느 한 체인 아이디를 선택하고, 상기 선택된 체인 아이디를 상기 유입 패킷에 연관되도록 할 수 있다.Also, the controller may select one of the plurality of service chain IDs based on the information of the incoming packet included in the control request message for the packet received from the open flow switch received from the open flow switch And associate the selected chain ID with the incoming packet.

또한, 데이터를 저장하는 저장부를 더 포함하고, 상기 저장부는 사용자가 사용하는 서비스 마다의 일련의 NF 서비스들의 리스트를 엔트리로 저장하는 NF 리스트 DB를 구비할 수 있다.The storage unit may further include a storage unit for storing data, and the storage unit may include an NF list DB for storing, as an entry, a list of a series of NF services for each service used by a user.

본 발명에 따르면, 사용자의 트래픽이 들어올 때마다 체이닝 룰을 만들고 적용할 필요가 없어, 체이닝 룰 및 제어기 및 스위치 간 트래픽이 감소될 수 있다. 또한 서비스 체이닝 룰(플로우 엔트리)를 정의한 순간 미리 배포되기 때문에, 사용자의 트래픽이 유입될 때마다 해당 패킷의 처리 방법을 스위치에서 제어기로 문의할 필요가 없다. 아울러 기정의된 서비스 체인 아이디 등을 사용함으로써, 플로우 테이블의 사이즈를 최소화할 수 있다. 이에 의해 플로우 엔트리의 선배포도 가능하며, 메모리 자원을 효율적으로 사용할 수 있다.According to the present invention, the chaining rule and the traffic between the controller and the switch can be reduced because there is no need to create and apply the chaining rule every time the user's traffic comes in. In addition, since the service chaining rule (flow entry) is distributed in advance at the time of defining it, there is no need to inquire the processing method of the packet from the switch to the controller every time the user's traffic flows. In addition, by using a predefined service chain ID or the like, the size of the flow table can be minimized. Thus, it is possible to utilize the memory resources efficiently, and the flow entry is possible.

또한, 자동 및 동적으로 망을 운영하므로, 네트워크 설계가 자유로우며, 논리 포트 기반의 네트워크 기능을 제공하여 포트의 연결 상태 및 트래픽 상태에 따른 효율적인 네트워크 기능 엔트리 관리가 가능하며 확장성 및 유연성이 높으며, 링크가 다운된 경우 대체 경로를 쉽고 자동으로 복구할 수 있다. 또한 모바일 트래픽의 경우 엑세스 네트워크와 코어 네트워크 사이의 터널링을 이루어져, 사용자의 IP 정보 등을 알 수 없으나, 본 발명에 따르면 터널링에 따른 캡슐화된 패킷을 네트워크 기능을 이용하여 캡슐화된 패킷 정보를 알 수 있으며, 모바일 망의 엑세스 단에서 SDN 네트워크를 이용한 서비스 체인을 제공함으로써, 모바일 망에서의 부하를 낮춤과 동시에 사용자 경험을 향상시킬 수 있다.In addition, because it manages network automatically and dynamically, network design is free, logical port based network function is provided, efficient management of network function entries according to port connection state and traffic state is possible, and scalability and flexibility are high, If the link goes down, the alternate path can be easily and automatically recovered. In addition, in the case of mobile traffic, tunneling is performed between the access network and the core network so that the IP information of the user can not be known. However, according to the present invention, the encapsulated packet according to the tunneling can be informed of the encapsulated packet information using the network function By providing a service chain using the SDN network at the access terminal of the mobile network, the load on the mobile network can be lowered and the user experience can be improved.

도 1은 본 발명의 일실시예에 따른 SDN 네트워크 시스템의 블록 구성도(block diagram),
도 2는 도 1의 네트워크 시스템의 제어기의 블록 구성도,
도 3은 도 1의 네트워크 시스템의 스위치의 블록 구성도,
도 4는 플로우 엔트리의 필드 테이블 및 플로우 엔트리에 따른 동작 종류를 나타내는 동작 테이블,
도 5는 그룹 및 미터 테이블의 필드 테이블,
도 6은 본 발명의 다른 실시예에 따른 SDN 네트워크 시스템의 블록 구성도,
도 7은 본 발명의 다른 실시예에 따른 제어기의 블록 구성도,
도 8은 본 발명의 다른 실시예에 따른 스위치의 블록 구성도,
도 9는 본 발명의 일 실시예에 따른 포트 관리부의 블록 구성도,
도 10은 본 발명의 일 실시예에 따른 오픈플로우 스위치의 서비스 체이닝 제공 방법에 대한 순서도,
도 11은 제어기에서의 서비스 체이닝 제공 방법에 관한 순서도,
도 12는 본 발명의 다른 실시예에 따른 네트워크 시스템의 블록 구성도,
도 13은 본 발명의 일 실시예에 따른 NFv 리스트 데이터 베이스 테이블,
도 14는 본 발명의 일 실시예에 따른 아이디 패킷의 예시도,
도 15는 본 발명의 일 실시예에 따른 플로우 테이블,
도 16은 본 발명의 또 다른 실시예에 따른 네트워크 시스템의 블록 구성도,
도 17은 본 발명의 다른 실시예에 따른 플로우 테이블,
도 18은 본 발명의 다른 실시예에 따른 스위치의 서비스 체인 제공 방법에 관한 순서도,
도 19는 본 발명의 일 실시예에 따른 제어기의 오픈플로우 스위치 제어 방법에 관한 순서도, 및
도 20은 제어기와 오픈플로우 스위치 사이의 메시지 흐름도이다.
1 is a block diagram of an SDN network system according to an embodiment of the present invention;
2 is a block diagram of a controller of the network system of FIG. 1;
FIG. 3 is a block diagram of a switch of the network system of FIG. 1,
4 is an operation table showing a field table of a flow entry and an operation type according to a flow entry,
5 shows the field table of the group and meter tables,
6 is a block diagram of an SDN network system according to another embodiment of the present invention.
7 is a block diagram of a controller according to another embodiment of the present invention;
8 is a block diagram of a switch according to another embodiment of the present invention.
9 is a block diagram of a port management unit according to an embodiment of the present invention;
10 is a flowchart illustrating a service chaining providing method of an open flow switch according to an embodiment of the present invention;
11 is a flowchart showing a service chaining providing method in a controller,
12 is a block diagram of a network system according to another embodiment of the present invention;
FIG. 13 illustrates an NFv list database table according to an embodiment of the present invention,
Figure 14 is an illustration of an ID packet according to an embodiment of the present invention,
Figure 15 is a flow table according to one embodiment of the present invention,
16 is a block diagram of a network system according to another embodiment of the present invention;
17 is a flow table according to another embodiment of the present invention,
18 is a flowchart of a service chain providing method of a switch according to another embodiment of the present invention;
FIG. 19 is a flow chart of a method for controlling an open flow switch of a controller according to an embodiment of the present invention, and FIG.
20 is a message flow diagram between the controller and the open flow switch.

이하, 도면을 참조하여 본 발명을 보다 상세하게 설명한다.Hereinafter, the present invention will be described in more detail with reference to the drawings.

제 1, 제 2등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.The terms first, second, etc. may be used to describe various components, but the components should not be limited by the terms. The terms are used only for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, the first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component. And / or < / RTI > includes any combination of a plurality of related listed items or any of a plurality of related listed items.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 또한 네트워크 상의 제1 구성요소와 제2 구성요소가 연결되어 있거나 접속되어 있다는 것은, 유선 또는 무선으로 제1 구성요소와 제2 구성요소 사이에 데이터를 주고 받을 수 있음을 의미한다.It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between. Also, the fact that the first component and the second component on the network are connected or connected means that data can be exchanged between the first component and the second component by wire or wirelessly.

또한, 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 단순히 본 명세서 작성의 용이함만이 고려되어 부여되는 것으로서, 그 자체로 특별히 중요한 의미 또는 역할을 부여하는 것은 아니다. 따라서, 상기 "모듈" 및 "부"는 서로 혼용되어 사용될 수도 있다.In addition, suffixes "module" and " part "for the components used in the following description are given merely for convenience of description, and do not give special significance or role in themselves. Accordingly, the terms "module" and "part" may be used interchangeably.

이와 같은 구성요소들은 실제 응용에서 구현될 때 필요에 따라 2 이상의 구성요소가 하나의 구성요소로 합쳐지거나, 혹은 하나의 구성요소가 2 이상의 구성요소로 세분되어 구성될 수 있다. 도면 전체를 통하여 동일하거나 유사한 구성요소에 대해서는 동일한 부여하였고, 동일한 도면 부호를 가지는 구성요소에 대한 자세한 설명은 전술한 구성요소에 대한 설명으로 대체되어 생략될 수 있다.When such components are implemented in practical applications, two or more components may be combined into one component, or one component may be divided into two or more components as necessary. The same or similar elements are given the same throughout the drawings, and the detailed description of the elements having the same reference numerals can be omitted and replaced with the description of the above-described elements.

도 1은 본 발명의 일실시예에 따른 SDN 네트워크 시스템의 블록 구성도(block diagram), 도 2는 도 1의 네트워크 시스템의 제어기의 블록 구성도, 도 3은 도 1의 네트워크 시스템의 스위치의 블록 구성도, 도 4는 플로우 엔트리의 필드 테이블 및 플로우 엔트리에 따른 동작 종류를 나타내는 동작 테이블, 도 5는 그룹 및 미터 테이블의 필드 테이블이다.FIG. 1 is a block diagram of an SDN network system according to an embodiment of the present invention. FIG. 2 is a block diagram of a controller of the network system of FIG. 1. FIG. 3 is a block diagram of a switch of a network system of FIG. 4 is an operation table showing a field table of a flow entry and an operation type according to a flow entry, and Fig. 5 is a field table of a group and a meter table.

도 1을 참조하면, 본 발명에 일 실시예에 따른 SDN 네트워크 시스템은 제어기(contoller)(10), 복수의 스위치(20) 및 복수의 네트워크 디바이스(30)를 포함할 수 있다.Referring to FIG. 1, an SDN network system according to an embodiment of the present invention may include a controller 10, a plurality of switches 20, and a plurality of network devices 30.

네트워크 디바이스(30)는 데이터나 정보를 주고 받고자 하는 사용자 단말 장치, 또는 특정 기능을 수행하는 물리 장치 또는 가상 장치를 포함할 수 있다. 하드웨어 관점에서, 네트워크 디바이스(30)는 PC, 클라이언트 단말기, 서버, 워크스테이션, 수퍼컴퓨터, 이동통신 단말기, 스마트폰, 스마트패드 등이 있을 수 있다. 또한 네트워크 디바이스(30)는 물리 장치 상에 생성된 가상 머신(VM)일 수 있다. The network device 30 may include a user terminal device for exchanging data or information, or a physical device or a virtual device for performing a specific function. From a hardware standpoint, the network device 30 may be a PC, a client terminal, a server, a workstation, a supercomputer, a mobile communication terminal, a smart phone, a smart pad, or the like. The network device 30 may also be a virtual machine (VM) created on a physical device.

네트워크 디바이스(30)는 여러가지 네트워크 상의 기능을 수행하는 네트워크 기능(network function)으로 지칭될 수 있다. 네트워크 기능은 안티(anti) DDoS, 침입 감지/차단 (IDS/IPS), 통합 보안 서비스, 가상 사설망 서비스, 안티 바이러스, 안티 스팸, 보안 서비스, 접근관리 서비스, 방화벽, 로드 밸런싱, QoS, 비디오 최적화 등을 포함할 수 있다. 이러한 네트워크 기능은 가상화될 수 있다.The network device 30 may be referred to as a network function that performs functions on various networks. Network features include anti-DDoS, intrusion detection / blocking (IDS / IPS), integrated security services, virtual private network services, anti-virus, anti-spam, security services, access management services, firewalls, load balancing, . ≪ / RTI > These network functions can be virtualized.

가상화된 네트워크 기능으로 ETSI(유럽전기통신표준협회)에서 발행한 NFV 관련 백서(비특허문헌 3 참조)에서 정의된 네트워크 기능 가상화(Network Function Virtualiztion; NFV)가 있다. 본 명세서에서 네트워크 기능(NF)은 네트워크 기능 가상화(NFV)와 혼용하여 사용될 수 있다. NFV는 테넌트(tenant)별 필요한 L4-7 서비스 연결을 동적으로 생성하여 필요한 네트워크 기능을 제공하거나, DDoS 공격의 경우 정책 기반으로 필요한 방화벽, IPS 및 DPI 기능 등을 일련의 서비스 체이닝으로 빠르게 제공되는데 이용될 수 있다. 또한 NFV는 방화벽이나 IDS/IPS를 쉽게 온오프 할 수 있으며, 자동으로 프로비저닝(provisioning)할 수 있다. NFV는 오버 프로비저닝의 필요성도 줄일 수 있다.There is a network function virtualization (NFV) defined in a white paper on NFV issued by the European Telecommunications Standards Institute (ETSI) (see non-patent reference 3) as a virtualized network function. The network function (NF) may be used herein in combination with network function virtualization (NFV). NFV provides necessary network functions by dynamically generating necessary L4-7 service connection for each tenant, and provides firewall, IPS and DPI functions necessary for policy-based DDoS attacks quickly through a series of service chaining . NFVs can also easily turn on and off firewalls or IDS / IPS and provision them automatically. NFV can also reduce the need for overprovisioning.

제어기(controller)(10)는 SDN 시스템을 제어하는 일종의 지휘 컴퓨터로서, 다양하고 복잡한 기능들, 예를 들어, 라우팅, 정책 선언, 및 보안 체크 등을 할 수 있다. 제어기(10)는 하위 계층의 복수의 스위치(20)에서 발생하는 패킷의 플로우를 정의할 수 있다. 제어기(10)는 네트워크 정책 상 허용되는 플로우에 대해 네트워크 토폴로지 등을 참조하여 플로우가 경유할 경로(데이터 경로)를 계산한 후, 경로 상의 스위치에 상기 플로우의 엔트리가 설정되도록 할 수 있다. 제어기(10)는 특정 프로토콜, 예를 들어, 오픈플로우 프로토콜을 이용하여 스위치(20)와 통신할 수 있다. 제어기(10)와 스위치(20)의 통신 채널은 SSL에 의해 암호화 될 수 있다.A controller 10 is a kind of command computer that controls the SDN system and can perform various complex functions such as routing, policy declaration, and security check. The controller 10 can define the flow of packets occurring in the plurality of switches 20 in the lower layer. The controller 10 may calculate a path (data path) to be flowed by referring to a network topology or the like with respect to a flow allowed in the network policy, and then set an entry of the flow on a switch on the path. The controller 10 may communicate with the switch 20 using a specific protocol, e.g., an open flow protocol. The communication channel between the controller 10 and the switch 20 can be encrypted by SSL.

도 2를 참조하면, 제어기(10)는 스위치(20)와 통신하는 스위치 통신부(110), 제어부(100), 및 저장부(190)를 포함할 수 있다.2, the controller 10 may include a switch communication unit 110, a control unit 100, and a storage unit 190, which communicate with the switch 20.

저장부(190)는 제어부(100)의 처리 및 제어를 위한 프로그램을 저장할 수 있다. 저장부(190)는 입력되거나 출력되는 데이터들(패킷, 메시지 등)을 임시 저장을 위한 기능을 수행할 수 있다. 저장부(190)는 플로우 엔트리를 저장하는 엔트리 데이터베이스(DB)(191)를 포함할 수 있다.The storage unit 190 may store a program for processing and controlling the control unit 100. [ The storage unit 190 may perform a function for temporarily storing input or output data (packet, message, etc.). The storage unit 190 may include an entry database (DB) 191 for storing flow entries.

제어부(100)는 통상적으로 상기 각 부의 동작을 제어하여 제어기(10)의 전반적인 동작을 제어할 수 있다. 제어부(100)는 토폴로지 관리 모듈(120), 경로 계산 모듈(125), 엔트리 관리 모듈(135) 및 메시지 관리 모듈(130)을 포함할 수 있다. 각 모듈은 제어부(100) 내에 하드웨어로 구성될 수 있고, 제어부(100)와 별개의 소프트웨어로 구성될 수도 있다.The controller 100 may control the overall operation of the controller 10 by controlling the operations of the respective units. The control unit 100 may include a topology management module 120, a path calculation module 125, an entry management module 135, and a message management module 130. Each module may be configured in hardware in the control unit 100 and may be configured in software separate from the control unit 100. [

토폴로지 관리 모듈(120)은 스위치 통신부(110)를 통하여 수집된 스위치(20)의 접속 관계를 기초로 네트워크 토폴로지 정보를 구축 및 관리할 수 있다. 네트워크 토폴로지 정보는 스위치들 사이의 토폴로지 및 각 스위치에 연결되어 있는 네트워크 디바이스 토폴로지를 포함할 수 있다.The topology management module 120 can construct and manage network topology information based on the connection relationship of the switches 20 collected through the switch communication unit 110. [ The network topology information may include a topology between the switches and a network device topology connected to each switch.

경로 계산 모듈(125)은 토폴로지 관리 모듈(120)에서 구축된 네트워크 토폴로지 정보를 기초로 스위치 통신부(110)를 통해 수신한 패킷의 데이터 경로 및 상기 데이터 경로 상의 스위치에서 실행될 액션 열을 구할 수 있다.The path calculation module 125 can obtain the data path of the packet received through the switch communication unit 110 and the action column to be executed in the switch on the data path based on the network topology information established in the topology management module 120.

엔트리 관리 모듈(135)은 경로 계산 모듈(125)에서 계산된 결과, QoS 등의 정책, 및 사용자 지시 등을 기초로 하는 엔트리를 엔트리 DB(191)에 등록할 수 있다. 엔트리는 플로우 테이블, 그룹 테이블, 및 미터 테이블 등 중 어느 하나일 수 있다. 엔트리 관리 모듈(135)은 스위치(20)에 미리 각 테이블의 엔트리가 등록되도록 하거나(proactive), 스위치(20)로부터의 엔트리의 추가 또는 갱신 요구에 응답(reactive)할 수 있다. 엔트리 관리 모듈(135)은 필요에 따라 또는 스위치(10)의 엔트리 소멸 메시지 등에 의해 엔트리 DB(191)의 엔트리를 변경하거나 삭제할 수 있다.The entry management module 135 can register an entry based on the result calculated by the route calculation module 125, a policy such as QoS, and a user instruction in the entry DB 191. The entry may be any one of a flow table, a group table, and a meter table. The entry management module 135 may proactively register an entry in each table in the switch 20 and react to an addition or update request of an entry from the switch 20. [ The entry management module 135 may change or delete entries in the entry DB 191 as needed or in accordance with an entry disappearance message of the switch 10. [

메시지 관리 모듈(130)은 스위치 통신부(110)를 통해 수신한 메시지를 해석하거나, 스위치 통신부(110)를 통해 스위치로 전송되는 후술할 제어기-스위치 메시지를 생성할 수 있다. 제어기-스위치 메시지 중 하나인 상태 변경 메시지는 엔트리 관리 모듈(135)에 따른 엔트리 또는 엔트리 DB(191)에 저장된 엔트르에 기초하여 생성될 수 있다.The message management module 130 may interpret a message received through the switch communication unit 110 or may generate a controller-switch message to be transmitted to the switch through the switch communication unit 110, which will be described later. The status change message, which is one of the controller-switch messages, may be generated based on the entry according to the entry management module 135 or the entry stored in the entry DB 191. [

스위치(20)는 오픈플로우 프로토콜을 지원하는 물리적인 스위치 또는 가상 스위치일 수 있다. 스위치(20)는 수신한 패킷을 처리하여, 네트워크 디바이스(30) 사이의 플로우를 중계할 수 있다. 이를 위해 스위치(20)는 하나의 플로우 테이블 또는 비특허문헌 1에 상술되어 있는 파이프라인(pipeline) 처리를 위해 다중 플로우 테이블을 구비할 수 있다.The switch 20 may be a physical switch or a virtual switch supporting an open flow protocol. The switch 20 can process the received packet and relay the flow between the network devices 30. [ To this end, the switch 20 may comprise a single flow table or a multiple flow table for pipeline processing as described in non-patent document 1. [

플로우 테이블은 네트워크 디바이스(30)의 플로우를 어떻게 처리할 지의 규칙을 정의한 플로우 엔트리를 포함할 수 있다.The flow table may include a flow entry defining rules for how to handle the flow of network device 30. [

플로우(flow)는 하나의 스위치 관점에서 적어도 하나의 헤더 필드의 값을 공유하는 일련의 패킷들 또는 다중 스위치의 여러 플로우 엔트리(flow entry)들의 조합에 따른 특정 경로의 패킷 흐름을 의미할 수 있다. 오픈플로우 네트워크는 플로우 단위로 경로 제어, 장애 회복, 부하 분산 및 최적화를 행할 수 있다.A flow may refer to a packet flow of a particular path according to a series of packets sharing a value of at least one header field from a single switch or a combination of multiple flow entries of multiple switches. The open-flow network can perform path control, fault recovery, load balancing and optimization on a flow-by-flow basis.

스위치(20)는 다중 스위치의 조합에 따른 플로우의 입구 및 출구 측 에지 스위치(edge switch)(ingress switch and egress switch)와 에지 스위치 사이의 코어 스위치(core switch)로 구분될 수 있다.The switch 20 can be divided into a core switch between an ingress and egress edge switch and an edge switch between a flow according to the combination of multiple switches.

도 3을 참조하면, 스위치(20)는 다른 스위치 및/또는 네트워크 디바이스와 통신하는 포트부(205), 제어기(10)와 통신하는 제어기 통신부(210), 스위치 제어부(200), 및 저장부(290)를 포함할 수 있다.3, the switch 20 includes a port portion 205 for communicating with other switches and / or network devices, a controller communication portion 210 for communicating with the controller 10, a switch control portion 200, and a storage portion 290).

포트부(205)는 스위치 또는 네트워크 디바이스에서 유출입되는 한 쌍의 포트를 다수 구비할 수 있다. 한 쌍의 포트는 하나의 포트로 구현될 수 있다.The port unit 205 may include a plurality of pairs of ports that are flown out from a switch or a network device. A pair of ports can be implemented as one port.

저장부(290)는 스위치 제어부(200)의 처리 및 제어를 위한 프로그램을 저장할 수 있다. 저장부(290)는 입력되거나 출력되는 데이터들(패킷, 메시지 등)을 임시 저장을 위한 기능을 수행할 수 있다. 저장부(290)는 플로우 테이블, 그룹 테이블, 및 미터 테이블 등의 테이블(291)을 구비할 수 있다. 테이블(230) 또는 테이블의 엔트리는 제어기(10)의 메시지에 기초하여 추가, 수정, 삭제될 수 있다. 테이블 엔트리는 자체적으로 파기될 수 있다.The storage unit 290 may store a program for processing and controlling the switch control unit 200. [ The storage unit 290 may perform a function for temporarily storing input or output data (packets, messages, etc.). The storage unit 290 may include a table 291 such as a flow table, a group table, and a meter table. An entry in the table 230 or table may be added, modified or deleted based on the message of the controller 10. [ The table entry can be destroyed by itself.

플로우 테이블은 오픈플로우의 파이프라인(pipeline)을 처리하기 위해 다중 플로우 테이블로 구성될 수 있다. 도 4를 참조하면, 플로우 테이블의 플로우 엔트리는 패킷과 매치하는 조건(대조 규칙)을 기술한 매치 필드(match fields), 우선 순위(priority), 매치되는 패킷이 있는 경우 업데이트되는 카운터(counters), 플로우 엔트리에 매치되는 패킷이 있으면 발생하는 다양한 액션들의 집합인 인스트럭션(instruction), 스위치에서 파기될 시간을 기술하는 타임아웃(timeouts), 튜플(tuple)을 포함할 수 있다. 튜플(tuple)은 제어기에 의해 선택되어지는 오파큐(opaque) 타입으로, 제어기에 의해 플로우 통계, 플로우 변경, 및 플로우 삭제를 필터하기 위해 사용될 수 있으며, 패킷 처리시 사용되지 않는 쿠키(cookie)이다.The flow table can be composed of multiple flow tables to handle the pipeline of open flows. 4, a flow entry of a flow table includes match fields describing conditions (matching rules) to match a packet, a priority, counters to be updated when there are packets to be matched, An instruction that is a collection of various actions that occur if there is a packet matched to the flow entry, timeouts describing the time to be discarded in the switch, and a tuple. A tuple is an opaque type that is selected by the controller and can be used by the controller to filter flow statistics, flow changes, and flow deletes, and is a cookie that is not used in packet processing .

인스트럭션(instruction)은 다른 플로우 테이블로 패킷을 전달하는 것과 같은 파이프라인 프로세싱의 변경할 수 있다. 또한 인스트럭션은 액션 셋(action set)에 액션을 더하는 액션(action)들의 집합, 또는 패킷에 바로 적용하기 위한 액션들의 리스트를 포함할 수 있다. 액션(action)은 특정 포트로 패킷을 전송하거나, TTL 필드를 감소시키는 것과 같이 패킷을 수정하는 작업을 의미한다. 액션은 플로우 엔트리와 연관된 인스트럭션 집합의 일부 또는 그룹 엔트리와 연관된 액션 버킷에 속할 수 있다. 액션 셋(action set)은 각 테이블에서 지시된 액션이 누적된 집합을 의미한다. 액션 셋은 매치되는 테이블이 없을 때 수행될 수 있다. 도 5는 플로우 엔트리에 의한 여러 패킷 처리를 예시한다.An instruction may change pipeline processing such as forwarding a packet to another flow table. The instructions may also include a collection of actions to add an action to an action set, or a list of actions to apply directly to a packet. An action is an operation that modifies a packet, such as sending a packet to a specific port or decreasing the TTL field. The action may be part of an instruction set associated with the flow entry or belonging to an action bucket associated with the group entry. An action set is an aggregated set of actions indicated in each table. An action set can be performed when no table is matched. 5 illustrates various packet processing by a flow entry.

파이프라인(pipleline)은 패킷과 플로우 테이블 사이의 일련의 패킷 처리 과정을 의미한다. 스위치(20)에 패킷이 유입되면, 스위치(20)는 첫번째 플로우 테이블의 우선 순위가 높은 순서대로 패킷과 매칭되는 플로우 엔트리를 탐색한다. 매칭이 되면 해당 엔트리의 인스트럭션을 수행한다. 인스트럭션은 매칭되면 바로 수행하는 명령(apply-action), 액션 셋의 내용을 지우거나 추가/수정하는 명령(clear-action; write-action), 메타데이터(metadata) 수정 명령(write-metadata), 지정된 테이블로 메타데이터와 함께 패킷을 이동시키는 고우투 명령(goto-table) 등이 있다. 패킷과 매칭되는 플로우 엔트리가 없는 경우, 테이블 설정에 따라 패킷을 폐기(drop)하거나 제어기(10)로 패킷을 패킷-인 메시지(packet-in message)에 실어서 보낼 수 있다.A pipeline is a sequence of packets between a packet and a flow table. When a packet is input to the switch 20, the switch 20 searches for a flow entry matching the packet in the order of higher priority of the first flow table. When the matching is performed, the instruction of the entry is executed. An instruction may be an apply-action that is immediately matched, a command to clear or add / modify an action set, a write-action, a write-metadata command, And a goto-table that moves packets along with metadata to a table. If there is no flow entry matched with the packet, the packet may be dropped according to the table setting, or the packet may be sent to the controller 10 in a packet-in message.

그룹 테이블은 그룹 엔트리들을 포함할 수 있다. 그룹 테이블은 플로우 엔트리에 의해 지시되어 추가적인 포워딩 방법들을 제시할 수 있다. 도 5(a)를 참조하면, 그룹 테이블의 그룹 엔트리는 다음과 같은 필드를 구비할 수 있다. 그룹 엔트리를 구분할 수 있는 그룹 식별자(group identifier), 그룹 엔트리에 정의된 액션 버킷들을 일부(select) 또는 전부(all) 수행할 것이 여부에 대한 규칙을 명시한 그룹 타입(group type), 플로우 엔트리의 카운터와 같이 통계를 위한 카운터(counters), 및 그룹을 위해 정의된 파라미터들과 연관된 액션들의 집합인 액션 버킷(action buckets)을 포함할 수 있다.The group table may include group entries. The group table may be indicated by a flow entry to suggest additional forwarding methods. Referring to FIG. 5A, the group entry of the group table may include the following fields. A group identifier for identifying a group entry, a group type for specifying a rule for performing a select or all action buckets defined in the group entry, a counter for a flow entry , And action buckets, which are a set of actions associated with the parameters defined for the group.

미터 테이블(meter table)은 미터 엔트리들(meter entries)로 구성되며, 플로우 미터-당(per-flow meters)을 정의한다. 플로우 미터-당은 오픈플로우가 다양한 QoS 작동을 적용될 수 있도록 할 수 있다. 미터(meter)는 패킷의 레이트(rate of packets)를 측정 및 제어할 수 있는 일종의 스위치 요소이다. 도 5(b)를 참조하면, 미터 테이블(meter table)은 미터를 식별하는 미터 식별자(meter identifier), 밴드(band)에 지정된 속도와 패킷 동작 방법을 나타내는 미터 밴드(meter bands), 및 패킷이 미터에서 동작될 때 업데이트되는 카운터(counters) 필드들로 구성된다. 미터 밴드(meter bands)는 패킷이 어떻게 처리되는 지를 나타내는 밴드 타입(band type), 미터에 의해 미터 밴드를 선택하는데 사용되는 레이트(rate), 미터 밴드에 의해 패킷들이 처리될 때 업데이트되는 카운터(counters), 및 선택적인 아규먼트(argument)를 가지는 배드 타입들인 특정 아규먼트 타입(type specific argument)과 같은 필드들로 구성될 수 있다.A meter table is composed of meter entries and defines per-flow meters. The flow meter-party can allow open flows to be applied to various QoS operations. A meter is a kind of switch element that can measure and control the rate of packets. Referring to FIG. 5 (b), a meter table includes a meter identifier for identifying a meter, a rate specified in a band and meter bands indicating a method of packet operation, And counters fields that are updated when operated on the meter. Meter bands include a band type indicating how the packet is to be processed, a rate used to select the meter band by the meter, counters that are updated when the packets are processed by the meter band, ), And a type specific argument, which is a bad type with optional arguments.

스위치 제어부(200)는 통상적으로 상기 각 부의 동작을 제어하여 스위치(200)의 전반적인 동작을 제어할 수 있다. 제어부(200)는 테이블(291)을 관리하는 테이블 관리 모듈(240), 플로우 검색 모듈(220), 플로우 처리 모듈(230), 및 패킷 처리 모듈(235)를 포함할 수 있다. 각 모듈은 제어부(200) 내에 하드웨어로 구성될 수 있고, 제어부(200)와 별개의 소프트웨어로 구성될 수도 있다.The switch control unit 200 can control the overall operation of the switch 200 by controlling operations of the respective units. The control unit 200 may include a table management module 240 that manages the table 291, a flow search module 220, a flow processing module 230, and a packet processing module 235. Each module may be configured in hardware in the control unit 200 and may be configured in software separate from the control unit 200. [

테이블 관리 모듈(240)은 제어기 통신부(210)를 통해 제어기(10)로부터 수신한 엔트리를 적절한 테이블에 추가하거나, 타임 아웃(time out)된 엔트리를 주기적으로 제거할 수 있다.The table management module 240 may add the entry received from the controller 10 to the appropriate table through the controller communication unit 210 or periodically remove the time-out entry.

플로우 검색 모듈(220)은 유저 트래픽으로서 수신한 패킷으로부터 플로우 정보를 추출할 수 있다. 플로우 정보는 에지 스위치의 패킷 유입 포트인 입구 포트(ingress port)의 식별 정보, 해당 스위치의 패킷 유입 포트(incoming port)의 식별 정보, 패킷 헤더 정보(송신원 및 목적지의 IP 주소, MAC 주소, 포트, 및 VLAN 정보 등), 및 메타데이터 등을 포함할 수 있다. 메타데이터는 이전 테이블에서 선택적으로 추가되거나, 다른 스위치에서 추가된 데이터일 수 있다. 플로우 검색 모듈(220)은 추출한 플로우 정보를 참조하여 테이블(291)에 수신 패킷에 대한 플로우 엔트리가 있는지 검색할 수 있다. 플로우 검색 모듈(220)은 플로우 엔트리가 검색되면, 플로우 처리 모듈(260)에 검색된 플로우 엔트리에 따라 수신 패킷을 처리하도록 요청할 수 있다. 만일 플로우 엔트리 검색이 실패하면, 플로우 검색 모듈(220)은 수신 패킷 또는 수신 패킷의 최소한의 데이터를 제어기 통신부(210)를 통해 제어기(100)로 전송할 수 있다.The flow search module 220 may extract flow information from the received packet as user traffic. The flow information includes identification information of an ingress port as a packet inflow port of the edge switch, identification information of an incoming port of the switch of the switch, packet header information (IP address of the source and destination, MAC address, port, And VLAN information, etc.), metadata, and the like. The metadata may be optionally added in the previous table or may be data added in another switch. The flow search module 220 can search the table 291 for a flow entry for a received packet by referring to the extracted flow information. The flow search module 220 may request the flow processing module 260 to process the received packet according to the retrieved flow entry, if a flow entry is found. If the flow entry search fails, the flow search module 220 may transmit the minimum data of the received packet or the received packet to the controller 100 through the controller communication unit 210.

플로우 처리 모듈(230)는 플로우 검색 모듈(220)에서 검색된 엔트리에 기술된 절차에 따라 패킷을 특정 포트 또는 다중 포트로 출력하거나, 드롭시키거나 또는 특정 헤더 필드를 수정하는 등의 액션을 처리할 수 있다.The flow processing module 230 may process an action, such as outputting a packet to a specific port or multiple ports, dropping it, or modifying a specific header field, in accordance with the procedure described in the entry retrieved from the flow search module 220 have.

플로우 처리 모듈(230)는 플로우 엔트리의 파이프라인 프로세스를 처리하거나 액션을 변경하기 위한 인스트럭션을 실행하거나 다중 플로우 테이블에서 더 이상 다음 테이블로 갈 수 없을 때 액션 세트를 실행할 수 있다.The flow processing module 230 may execute an action set to execute a pipeline process of a flow entry, execute an instruction to change an action, or execute a set of actions when it is no longer possible to go to the next table in a multi-flow table.

패킷 처리 모듈(235)은 플로우 처리 모듈(230)에 의해 처리된 패킷을 플로우 처리 모듈(230)에서 지정한 포트부(205)의 하나 또는 2 이상의 포트로 실제로 출력할 수 있다.The packet processing module 235 may actually output the packet processed by the flow processing module 230 to one or more ports of the port unit 205 designated by the flow processing module 230. [

도 1에 도시되어 있지 않지만, SDN 네트워크 시스템은 가상 네트워크 디바이스, 가상 스위치 등을 생성, 변경 및 삭제하는 오케스트레이터를 더 포함할 수 있다. 오케스트레이터는 가상 네트워크 디바이스를 생성하는 경우, 가상 네트워크가 접속할 스위치의 식별 정보, 해당 스위치에 연결되는 포트 식별 정보, MAC 주소, IP 주소, 터넨트(tenant) 식별 정보 및 네트워크 식별 정보 등의 네트워크 디바이스의 정보를 제어기(10)로 제공할 수 있다.Although not shown in FIG. 1, the SDN network system may further include an orchestrator for creating, changing, and deleting virtual network devices, virtual switches, and the like. When an orchestrator creates a virtual network device, the orchestrator generates a virtual network device such as a network device, such as identification information of a switch to be connected to the virtual network, port identification information connected to the switch, MAC address, IP address, tenant identification information, To the controller (10).

제어기(10)와 스위치(20)는 다양한 정보를 주고 받는데, 이를 오픈플로우 프로토콜 메시지(openflow protocol message)라 칭한다. 이러한 오픈플로우 메시지는 제어기-스위치 메시지(controller-to-switch message), 비동기 메시지(asynchronous message), 및 대칭 메시지(symmetric message) 등의 타입이 있다. 각 메시지는 엔트리를 식별하는 트랜잭션 식별자(transaction id; xid)를 헤더에 구비할 수 있다.The controller 10 and the switch 20 exchange various information, which is called an open flow protocol message. Such an open flow message may be of a type such as a controller-to-switch message, an asynchronous message, and a symmetric message. Each message may have a transaction identifier (transaction id; xid) in the header that identifies the entry.

제어기-스위치 메시지는 제어기(10)가 생성하여 스위치(20)에 전달하는 메시지로써, 주로 스위치(20)의 상태를 관리하거나 점검하기 위해 사용된다. 제어기-스위치 메시지는 제어기(10)의 제어부(100), 특히 메시지 관리 모듈(130)에 의해 생성될 수 있다.The controller-switch message is a message generated by the controller 10 and transmitted to the switch 20, which is mainly used for managing or checking the state of the switch 20. [ The controller-switch message may be generated by the controller 100 of the controller 10, and in particular by the message management module 130.

제어기-스위치 메시지는 스위치의 능력(capabilities)을 문의하는 기능(features), 스위치(20)의 구성 매개 변수 등의 설정을 문의하고 설정하기 위한 설정(configuration), 오픈플로우 테이블의 플로우/그룹/미터 엔트리들을 추가/삭제/수정하기 위한 상태 변경 메시지(modify state message), 패킷-인 메시지를 통해 스위치로부터 수신한 패킷을 해당 스위치 상의 특정한 포트로 전송하도록 하는 패킷-아웃 메시지(packet-out message) 등이 있다. 상태 변경 메시지는 플로우 테이블 변경 메시지(modify flow table message), 플로우 엔트리 변경 메시지(modify flow entry message), 그룹 엔트리 변경 메시지(modify group entry message), 포트 변경 메시지(prot modification message), 및 미터 엔트리 변경 메시지(meter modification message) 등이 있다.The controller-switch message includes features inquiring about the capabilities of the switch, configuration for inquiring and setting the settings of the configuration parameters of the switch 20, flow / group / meter of the open flow table, A modify state message for adding / deleting / modifying entries, a packet-out message for transmitting a packet received from the switch through a packet-in message to a specific port on the switch, and the like . The state change message includes a modify flow table message, a modify flow entry message, a modify group entry message, a prot modification message, and a meter entry change message. Message (meter modification message).

비동기 메시지는 스위치(20)가 생성하는 메시지로서, 스위치의 상태 변경 및 네트워크 이벤트 등을 제어기(10)에서 업테이트하기 위해 사용된다. 비동기 메시지는 스위치(20)의 제어부(200), 특히 플로우 검색 모듈(220)에 의해 생성될 수 있다.The asynchronous message is a message generated by the switch 20, and is used to update the state of the switch, the network event, and the like in the controller 10. The asynchronous message may be generated by the control unit 200 of the switch 20, in particular by the flow search module 220.

비동기 메시지로 패킷-인 메시지(packet-in message), 플로우 삭제 메시지(flow-removed), 에러 메시지 등이 있다. 패킷-인 메시지는 스위치(20)가 제어기(10)에게 패킷을 전송하여 패킷에 대한 제어를 받기 위해 사용된다. 패킷-인 메시지는 스위치(20)가 미지의 패킷을 수신한 경우, 데이터 경로를 요구하기 위해, 오픈플로우 스위치(20)에서 제어기(10)로 전송되는 수신 패킷 또는 그 사본의 전부 또는 일부를 포함하는 메시지이다. 유입 패킷에 연관된 엔트리의 액션이 제어기로 보내라고 정해져 있을 때에도 패킷-인 메시지가 사용된다. 삭제된 플로우(flow-removed) 메시지는 플로우 테이브에서 삭제할 플로우 엔트리 정보를 제어기(10)로 전달하기 위해 사용된다. 이 메시지는 제어기(10)가 스위치(20)에 해당 플로우 엔트리 삭제를 요청하였거나 플로우 타임아웃(timeout)에 의한 플로우 만기 처리(flow expiry process)에서 발생한다.Asynchronous messages include packet-in messages, flow-removed messages, and error messages. The packet-in message is used by the switch 20 to send a packet to the controller 10 to receive control of the packet. The packet-in message includes all or part of the received packet, or a copy thereof, sent from the open flow switch 20 to the controller 10 to request the data path when the switch 20 receives an unknown packet Message. A packet-in message is used even when the action of the entry associated with the incoming packet is determined to be sent to the controller. The deleted flow-removed message is used to forward the flow entry information to the controller 10 to be deleted from the flow table. This message occurs when the controller 10 requests the switch 20 to delete the corresponding flow entry or in a flow expiry process by a flow timeout.

대칭 메시지는 제어기(10) 및 스위치(20) 모두에서 생성되며, 상대방의 요청이 없어도 전송되는 특징이 있다. 제어기와 스위치 간에 연결을 개시할 때 사용되는 헬로(hello), 제어기 및 스위치 간 연결에 이상이 없음을 확인하기 위한 에코(echo), 및 제어기나 스위치에 의해 사용되며 문제를 반대측에 알리기 위한 에러 메시지(error message) 등을 포함할 수 있다. 에러 메시지는 대부분 제어기에 의해 개시된 요청에 따른 실패를 나타나기 위해 스위치에서 사용된다.The symmetric message is generated in both the controller 10 and the switch 20, and is transmitted even when there is no request from the other party. A hello used to initiate the connection between the controller and the switch, an echo to confirm that there is no abnormality in the connection between the controller and the switch, and an error message used by the controller or switch to inform the other side of the problem an error message, and the like. The error message is mostly used in the switch to indicate a failure in response to a request initiated by the controller.

도 6은 본 발명의 다른 실시예에 따른 SDN 네트워크 시스템의 블록 구성도, 도 7은 본 발명의 다른 실시예에 따른 제어기의 블록 구성도, 도 8은 본 발명의 다른 실시예에 따른 스위치의 블록 구성도, 도 9는 본 발명의 일 실시예에 따른 포트 관리부의 블록 구성도이다.FIG. 6 is a block diagram of an SDN network system according to another embodiment of the present invention. FIG. 7 is a block diagram of a controller according to another embodiment of the present invention. FIG. 8 is a block diagram of a switch according to another embodiment of the present invention. FIG. 9 is a block diagram of a port management unit according to an embodiment of the present invention.

도 6을 참조하면, 본 실시예에 따른 네트워크 시스템은 제어기(10), 복수의 오픈플로우 스위치(20; SW1~SW3), 복수의 네트워크 디바이스(35)(40; NF1~NF6), 및 오케스트레이터(50)를 포함할 수 있다. 동일하거나 유사한 구성요소에 대한 자세한 설명은 도 1 내지 도 5를 참조한다.6, the network system according to the present embodiment includes a controller 10, a plurality of open flow switches 20 (SW1 to SW3), a plurality of network devices 35 (NF1 to NF6) 40 and an orchestrator (50). Reference is made to Figs. 1 to 5 for a detailed description of the same or similar components.

네트워크 디바이스는 데이터나 정보를 주고 받고자 하는 사용자 단말 장치(35), 및 특정 기능을 수행하는 네트워크 기능 그룹(40)(NF: NF1 ~ NF6)을 포함할 수 있다. The network device may include a user terminal device 35 for exchanging data or information, and a network function group 40 (NF: NF1 to NF6) performing a specific function.

네트워크 기능 그룹(40)는 일련의 서비스 체이닝 중 각각의 기능을 제공하는 장치로서, 유연성 및 확장성, 안정성을 담보하기 위해 가상 장치인 것이 바람직하다. 네트워크 기능 그룹은 하나 이상의 네트워크 기능 노드를 포함할 수 있다. 네트워크 기능 노드들은 네트워크 기능 가상화(Network Function Virturalisatoin) 노드인 것이 바람직하다. 이하, 네트워크 기능 노드는 네트워크 기능 가상화 노드로 가정하고 기술한다.The network function group 40 is a device that provides each function of a series of service chaining, and is preferably a virtual device to ensure flexibility, scalability, and stability. The network function group may include one or more network function nodes. Preferably, the network function nodes are network function virtualization nodes. Hereinafter, the network function node is assumed to be a network function virtualization node.

도 9를 참조하면, 네트워크 기능 그룹(40)은 동일한 기능의 네트워크 기능 가상화 노드들(NFv)(301~304)로 구성되는 것이 바람직하다. 동일 기능 그룹의 NFv 노드들은 오픈플로우 스위치(20)의 논리 포트에 연결되어 하나의 네트워크 디바이스처럼 작동되도록 집성(aggregation)화 되어 있는 것이 바람직하다. 자세한 설명은 후술한다.Referring to FIG. 9, the network function group 40 is preferably composed of network function virtualization nodes (NFv) 301 to 304 having the same function. Preferably, the NFv nodes of the same function group are aggregated to be connected to the logical port of the open flow switch 20 to operate as a single network device. A detailed description will be given later.

사용자 단말 장치(35)는 데이터나 정보를 요청하는 장치로서, PC, 서버, 클라이언트, 이동 통신이 가능한 다양한 단말기 등을 포함할 수 있다.The user terminal 35 is a device for requesting data or information, and may include a PC, a server, a client, various terminals capable of mobile communication, and the like.

도 7을 참조하면, 제어기(10)는 스위치(20)와 통신하는 스위치 통신부(110), 토폴로지 관리 모듈(120), 경로 계산 모듈(125), 메시지 관리 모듈(130), 엔트리 관리 모듈(135), 추출 모듈(140), 및 과금 모듈(145)을 구비하는 제어부(100), 및 저장부(190)를 포함할 수 있다. 동일한 도면 부호에 대한 구성요소의 설명은 도 2를 참조한다.7, the controller 10 includes a switch communication unit 110 for communicating with the switch 20, a topology management module 120, a path calculation module 125, a message management module 130, an entry management module 135 A control module 100 having an extraction module 140 and a billing module 145, and a storage unit 190. [ Reference is made to Fig. 2 for a description of components for the same reference numerals.

제어부(100)는 통상적으로 상기 각 부의 동작을 제어하여 제어기(100)의 전반적인 동작을 제어할 수 있다. 제어부(100)에 속한 각 모듈은 제어부(110) 내에 하드웨어로 구성될 수 있고, 제어부(110)와 별개의 소프트웨어로 구성될 수도 있다.The controller 100 may control the overall operation of the controller 100 by controlling the operations of the respective units. Each module belonging to the control unit 100 may be constituted by hardware in the control unit 110 or software separate from the control unit 110. [

추출 모듈(140)은 스위치 통신부(110)로부터 수신한 패킷-인 메시지(packet-in message)로부터 요청 서비스의 종류를 나타내는 서비스 식별자 및 서비스 요청한 사용자를 식별할 수 있는 사용자 식별자를 추출할 수 있다.The extraction module 140 may extract a service identifier indicating the type of the requested service and a user identifier capable of identifying a user who has requested the service from a packet-in message received from the switch communication unit 110.

서비스 식별자는 네트워크에서 제공하는 서비스의 타입을 나타낸다. 서비스 타입은 웹 트래픽, 동영상 트래픽, SNS(social network service) 트래픽 등을 포함할 수 있다. 서비스 식별자는 서비스를 요청하는 사용자 단말 장치(35)에서 미리 정의되거나, 트래픽을 SDN 네트워크로 전송하는 게이트웨이 또는 SDN 네트워크의 에지 스위치에서 요청 패킷에 서비스 식별자를 정의할 수 있다. 서비스 식별자의 정의 방법은, 서비스 요청 패킷의 기정의되어 있는 필드 중 어느 필드에 서비스 식별자를 할당하거나, 서비스 요청 패킷에 서비스 종류를 나타내는 메타데이터를 추가하는 방법을 포함할 수 있다. 서비스의 종류를 나타내기 위해, 패킷 필드 중 vLAN 필드에 서비스 식별자를 태깅(tagging)할 수 있다. vLAN(virtual Local Area Network)은 물리적 배치와 상관없이 논리적으로 LAN을 구성할 수 있는 기술로, 사용자의 요청 서비스 별로 네트워크를 설정할 수 있다. vLAN은 별개의 네트워크를 설정할 수 있어, 네트워크 리소스 보안을 높이며, 비용 절감이 가능하고, 관리자의 네트워크 설정 작업이 용이해지며, 서로 다른 네트워크 그룹을 생성하기 때문에 불필요한 트래픽을 줄일 수 있다. 서비스 종류를 나타내기 위해, 패킷 필드 중 vxLAN(eXtendsible vLAN) 필드를 이용할 수도 있다.The service identifier indicates the type of service provided by the network. The service type may include web traffic, video traffic, social network service (SNS) traffic, and the like. The service identifier may be predefined in the user terminal device 35 requesting the service, or may define a service identifier in a request packet in an edge switch of a gateway or SDN network that transmits traffic to the SDN network. A method of defining a service identifier may include a method of assigning a service identifier to a field among preset fields of a service request packet or adding metadata indicating a service type to a service request packet. To indicate the type of service, the service identifier may be tagged in the vLAN field of the packet field. vLAN (Virtual Local Area Network) is a technology that can logically configure a LAN regardless of physical layout, and can set a network for each requested service. The vLAN can set up a separate network, which increases network resource security, reduces costs, facilitates network configuration for administrators, and reduces unnecessary traffic because it creates different network groups. To indicate the service type, the vxLAN (eXtendable vLAN) field of the packet field may be used.

vLAN 태깅은 오픈플로우 스위치(20), 특히 에지 스위치(SW1)에서 실행되는 것이 바람직하다. 에지 스위치(SW1)는 패킷으로부터 취득한 사용자 IP 및 목적기 IP에 따라, 서비스 타입에 대응하는 vLAN 태깅을 할 수 있다. 즉 서비스 식별자로서 vLAN 태깅은 제어기(10)에 패킷이 전달 되기 전에 실행되어야, 추출 모듈(140)에서 서비스 식별자를 추출할 수 있다.vLAN tagging is preferably performed in the open flow switch 20, particularly in the edge switch SW1. The edge switch SW1 can perform vLAN tagging corresponding to the service type according to the user IP and the destination IP obtained from the packet. That is, the vLAN tagging as the service identifier must be executed before the packet is delivered to the controller 10, and the extraction module 140 may extract the service identifier.

추출 모듈(140)은 사용자 식별자를 패킷의 사용자(송신원) IP(src IP)로부터 추출할 수 있다.The extraction module 140 may extract the user identifier from the user (source IP) of the packet (src IP).

추출 모듈(145)은 패킷-인 메시지로부터 서비스 체인 아이디를 추출할 수 있다. 서비스 체인 아이디는 서비스 식별자 및/또는 사용자 식별자에 대응하거나 동일할 수 있다.Extraction module 145 may extract the service chain ID from the packet-in message. The service chain ID may correspond to or be the same as the service identifier and / or the user identifier.

경로 계산 모듈(125)은 토폴로지 관리 모듈(120)에서 구축된 네트워크 토폴로지 정보를 기초로 스위치 통신부(110)를 통해 수신한 패킷의 전송 경로 및 상기 전송 경로 상의 오픈플로우 스위치(20)에서 실행될 액션 열을 구할 수 있다.The path calculation module 125 calculates the path of the packet received through the switch communication unit 110 and the action column to be executed by the open flow switch 20 on the transmission path based on the network topology information established in the topology management module 120, Can be obtained.

엔트리 관리 모듈(135)은 경로 계산 모듈(125)에서 계산된 결과를 플로우 엔트리로서 엔트리 DB(191)에 등록하고, 스위치(10)로부터의 플로우 엔트리 또는 엔트리들의 추가 또는 갱신 요구에 응답할 수 있다.The entry management module 135 may register the result calculated by the path calculation module 125 in the entry DB 191 as a flow entry and respond to the addition or update request of the flow entry or entries from the switch 10 .

과금 모듈(145)은 통계 DB(196)의 데이터를 기초로, 정책에 따라 사용자 별로 각각 과금할 수 있다.The billing module 145 may bill each user based on the data of the statistical DB 196 according to a policy.

저장부(190)는 제어부(110)의 처리 및 제어를 위한 프로그램을 저장할 수 있다. 저장부(190)는 입력되거나 출력되는 데이터들(패킷, 메시지 등)을 임시 저장을 위한 기능을 수행할 수 있다. 저장부(190)는 엔트리 DB(191), NFv 리스트 DB(192), 토폴로지 DB(193), 사용자 DB(194), 서비스 DB(195), 및 통계 DB(196)를 포함할 수 있다.The storage unit 190 may store a program for processing and controlling the control unit 110. The storage unit 190 may perform a function for temporarily storing input or output data (packet, message, etc.). The storage unit 190 may include an entry DB 191, an NFv list DB 192, a topology DB 193, a user DB 194, a service DB 195, and a statistics DB 196.

토폴로지 DB(193)는 토폴로지 관리부(130)에 의한 스위치와 네트워크 디바이스 정보, 및 스위치들 간의 연결 정보인 토폴로지를 저장 및 관리 할 수 있다. 토폴로지는 네트워크 디바이스들의 연결 정보를 포함할 수 있다.The topology DB 193 can store and manage switches and network device information by the topology management unit 130, and topology, which is connection information between switches. The topology may include connection information of network devices.

서비스 DB(195)는 서비스 엔트리를 저장 및 관리할 수 있다. 서비스 엔트리는 SDN 네트워크에서 제공하는 서비스의 타입을 구분할 수 있도록 하며, 서비스 식별자와 대응한다.The service DB 195 can store and manage service entries. The service entry allows identification of the type of service provided by the SDN network and corresponds to the service identifier.

사용자 DB(194)는 사용자의 엔트리를 저장 및 관리할 수 있다. 사용자 엔트리는 사용자가 사용하는 서비스 마다의 NFv들의 리스트를 관리할 수 있다. 사용자는 소스 IP를 통해 구분될 수 있다.The user DB 194 may store and manage the user's entry. The user entry can manage the list of NFvs for each service used by the user. The user can be distinguished through the source IP.

NFv 리스트 DB(192)는 사용자가 사용하는 서비스 마다의 일련의 NFv 리스트 엔트리를 저장 및 관리할 수 있다. 즉, NFv 리스트의 네트워크 기능 순서는 고정되거나, 토폴로지 상태나 트래픽 처리 상태 등을 참조하여 동적으로 변경될 수 있다. 서비스 및 사용자 별로 NFv 기능들인 NFv 리스트가 결정되는 것은, 서비스 제공자와 사용자의 서비스 협약(Service Level Agreement)에 따라 결정될 수 있다.The NFv list DB 192 can store and manage a series of NFv list entries for each service used by the user. That is, the network function order of the NFv list can be fixed or dynamically changed with reference to the topology state, the traffic processing state, and the like. The determination of the NFv list, NFv functions, for each service and user may be determined according to the service level agreement of the service provider and the user.

NFv 리스트 DB(192)는 서비스 DB(195) 및 사용자 DB(194)와 연관되지 않는 디폴트 NF 리스트 엔트리를 더 포함할 수 있다. 디폴트 NF 리스트 엔트리는 수신 패킷이 SDN 네트워크의 필수 NF에 의해 처리되어야 할 NF들의 리스트인 것이 바람직하다.The NFv list DB 192 may further include a default NF list entry not associated with the service DB 195 and the user DB 194. [ The default NF list entry is preferably a list of NFs whose received packets are to be processed by the required NF of the SDN network.

엔트리 DB(191)는 토폴로지 테이블(191), 서비스 테이블(192), 사용자 테이블(193), 및 네트워크 기능 테이블(194)을 기초로 작성된 적절한 패킷 경로에 대한 엔트리들을 저장 및 관리할 수 있다.The entry DB 191 can store and manage entries for an appropriate packet path based on the topology table 191, the service table 192, the user table 193, and the network function table 194.

통계 DB(196)는 각 플로우 마다의 트래픽 양, 처리 속도, 경유한 NF의 개수 및 그 타입 등의 통계를 저장 및 관리할 수 있다.
The statistical DB 196 can store and manage statistics such as the amount of traffic for each flow, the processing speed, the number of NFs passed and the type thereof.

도 8을 참조하면, 본 발명의 다른 실시예에 따른 오픈플로우 스위치(20; SW1, SW2, SW3)(27; GW-SW)는 다른 스위치 및/또는 네트워크 디바이스와 통신하는 포트부(205), 제어기(10)와 통신하는 제어기 통신부(210), 스위치 제어부(200), 및 저장부(290)를 포함할 수 있다. 자세한 설명은 도 3을 참조한다.8, an open flow switch 20 (SW1, SW2, SW3) 27 (GW-SW) according to another embodiment of the present invention includes a port unit 205 for communicating with other switches and / or network devices, A controller communication unit 210 for communicating with the controller 10, a switch control unit 200, and a storage unit 290. See FIG. 3 for a detailed description.

스위치 제어부(200)는 추출 모듈(245)를 더 포함할 수 있다. 추출 모듈(245)은 수신 패킷 또는 플로우로부터 요청 서비스의 종류를 나타내는 서비스 식별자 및/또는 서비스 요청자(사용자)를 식별할 수 있는 사용자 식별자를 추출할 수 있다. 추출 모듈(245)은 서비스 체인 아이디를 추출할 수 있다. 서비스 체인 아이디는 서비스 식별자 및/또는 사용자 식별자에 대응하거나 동일할 수 있다. 본 실시예에서 스위치(20, 27)는 제어기(10)에 의해 서비스 체인 아이디가 삽입된 플로우를 처리하므로, 본 추출 모듈(245)은 플로우 검색 모듈(220)에 의해 구현될 수 있다.The switch control unit 200 may further include an extraction module 245. The extraction module 245 may extract a service identifier indicating the type of the requested service and / or a user identifier capable of identifying the service requester (user) from the received packet or flow. The extraction module 245 may extract the service chain ID. The service chain ID may correspond to or be the same as the service identifier and / or the user identifier. In this embodiment, the switches 20 and 27 process the flow in which the service chain ID is inserted by the controller 10, so that the extraction module 245 can be implemented by the flow search module 220.

도 9를 참조하면, 본 발명의 다른 실시예에 따른 오픈플로우 스위치들 중 일부(SW2, SW3, GW-SW)(이하, '스위치 SW2'를 대표로 기술하기로 함)의 포트부(205)는 논리 포트(205-1, 205-2)를 포함할 수 있고, 패킷 처리 모듈(235)은 발산 유닛(236) 및 수렴 유닛(237)을 포함할 수 있다. 9, a port portion 205 of a portion (SW2, SW3, GW-SW) (hereinafter, referred to as a representative switch SW2) of the open flow switches according to another embodiment of the present invention, May include logical ports 205-1 and 205-2 and packet processing module 235 may include a diverging unit 236 and a converging unit 237. [

발산 유닛(236)은 스위치 SW2의 논리 출력 포트(205-1)에서 유입되는 패킷을 복수의 NFv 노드(301~304) 중 어느 하나로 전달할 수 있다. 앞서 설명한 바와 같이, 복수의 NFv 노드(301~304)는 동일한 네트워크 기능을 제공한다. 수렴 유닛(237)은 복수의 NFv 노드(301~304)에서 유입되는 패킷을 스위치 SW2의 논리 입력 포트(205-2)로 전달할 수 있다. 스위치 SW2의 논리 포트(205-1, 205-2)와 발산 및 수렴 유닛(236, 237)의 집성화 기능(aggregation)은 복수의 NFv(301~304) 노드가 하나의 NFv 노드 처럼 기능하도록 할 수 있다.The diverging unit 236 can forward a packet flowing from the logical output port 205-1 of the switch SW2 to any one of the plurality of NFv nodes 301 to 304. [ As described above, a plurality of NFv nodes 301 to 304 provide the same network function. The convergence unit 237 can forward the packets coming from the plurality of NFv nodes 301 to 304 to the logical input port 205-2 of the switch SW2. The logic ports 205-1 and 205-2 of the switch SW2 and the aggregation function of the diverging and converging units 236 and 237 allow the plurality of NFvs 301-304 to function as one NFv node .

패킷 처리 모듈(235)은 스위치 SW2의 논리 출력 포트(205-1)를 통해 유입되는 패킷을 포트의 연결 상태, 트래픽 상태 등을 고려하여 복수의 NFv(301~304) 중 적절한 NFv 노드로 전달되도록 발산 유닛(236)을 제어할 수 있다. 적절한 NFv 노드의 예로, 포트의 연결 상태가 좋은 NFv 노드 또는 트래픽이 제일 적은 NFv 노드 등이 있다.The packet processing module 235 controls the packet switching module 235 such that a packet received through the logical output port 205-1 of the switch SW2 is transferred to an appropriate NFv node among the plurality of NFvs 301 to 304 in consideration of the connection state, The diverging unit 236 can be controlled. An example of a suitable NFv node is an NFv node with a good connection or a NFv node with the least traffic.

스위치 SW2에 연결되는 NFv의 생성 및 삭제는 오케스트레이터(50)에 의해 실행될 수 있다. 오케스트레이터(50)는 트래픽 상태 등에 따라 하나의 논리 포트에 연결되는 NFv들의 개수를 조정할 수 있다.Creation and deletion of the NFv connected to the switch SW2 can be executed by the orchestrator 50. [ The orchestrator 50 may adjust the number of NFVs connected to one logical port depending on traffic conditions and the like.

이러한 논리 포트 및 집성 기능은 제어기(10) 및 스위치 SW2가 패킷 경로 상의 NFv 타입만 고려하게 할 수 있다. 패킷 경로 및 플로우 엔트리 등은 해당 기능의 NFv 그룹의 논리 포트로 간단히 기술될 수 있다.This logical port and aggregation function may allow the controller 10 and the switch SW2 to consider only the NFv type on the packet path. The packet path and the flow entry, etc. may be simply described as the logical port of the NFv group of the corresponding function.

본 발명에 따른 네트워크 시스템은 사용자 단말 장치(35)와 스위치 SW1을 중계하는 기지국(25)을 더 포함할 수 있다. 본 실시예에 따른 기지국(25)은 사용자 단말 장치(35)와 스위치 SW1 사이의 무선 연결을 제공할 수 있다. 기지국(25)은 LTE 통신망에서의 eNB(evolved Node B)를 포함할 수 있다.The network system according to the present invention may further include a base station 25 relaying the user terminal 35 and the switch SW1. The base station 25 according to the present embodiment can provide a wireless connection between the user terminal device 35 and the switch SW1. The base station 25 may include an evolved Node B (eNB) in an LTE communication network.

사용자 단말 장치(이하, 'UE')(35)로부터 IP 패킷을 수신한 eNB는 "UE(35)가 보낸 패킷" 앞에 GTP 헤더, UDP 헤더, 및 GTP 터널링을 위한 IP 헤더가 덧 붙여지는 캡슐링이 일어난다. 이러한 캡슐링은 원 전송처인 UE(35)의 IP 주소를 외부에서 못 보도록 하기 때문에, 캡슐링된 패킷은 오픈플로우 스위치(20)의 추출 모듈(245) 또는 제어기(10)의 추출 모듈(140)에서 사용자 식별 정보를 추출할 수 없는 문제점이 있다. 이에 스위치 SW1은 기지국(25)을 통해 수신하는 패킷을 디캡슐할 수 있는 디캡 기능의 NF1가 연결되는 것이 바람직하다. 디캡 기능의 NF1은 스위치 SW1에서 수신한 패킷에서 사용자 IP 및 목적지 IP를 포함하는 헤더를 덧 붙이여서, 메타데이터로 추가 한 후, 다시 스위치 SW1으로 전송할 수 있다.The eNB that has received the IP packet from the user terminal (hereinafter referred to as 'UE') 35 transmits a GTP header, a UDP header, and an IP header for GTP tunneling to the encapsulation This happens. The encapsulated packet is sent to the extraction module 245 of the open flow switch 20 or the extraction module 140 of the controller 10 because the encapsulation causes the IP address of the UE 35, There is a problem that the user identification information can not be extracted. It is preferable that the switch SW1 is connected to the NF1 of the decap function which can decapsulate the packet received through the base station 25. The NF1 of the decap function can add the header including the user IP and the destination IP in the packet received by the switch SW1, add it as metadata, and transmit it to the switch SW1 again.

스위치 SW1은 기지국(25) 이외에 모바일 코어 네트워크(80) 및 공용 인터넷망(90)과 연결될 수 있다. 스위치 SW1은 모마일 코어 망(80)을 거치지 않고 상대적으로 저렴한 비용의 공용 인터넷망(90)으로 운용이 가능하고, 기존의 모바일 코어 망(80)에 있던 방화벽이나 IDS, 로드 밸런서 등의 NF를 사용자 가까운 위치에서 운영함으로써 모바일 코어 망의 부하를 줄일 수 있다.The switch SW1 may be connected to the mobile core network 80 and the public Internet network 90 in addition to the base station 25. The switch SW1 can operate as a relatively inexpensive public Internet network 90 without passing through the MOMA core network 80 and can operate the NF such as a firewall, an IDS, and a load balancer in the existing mobile core network 80 It is possible to reduce the load on the mobile core network by operating in the vicinity of the user.

스위치 SW1은 게이트웨이 스위치(27)와 직접 연결될 수 있다. 게이트웨이 스위치(27)는 데이터 센터 네트워크(85)와 스위치 SW1의 도메인을 동일한 도메인으로 보이게 하여, 데이터 센터 네트워크(85)의 네트워크 기능 들(NF4~NF6)에 의한 서비스 체인이 이용되도록 할 수 있다.
The switch SW1 can be directly connected to the gateway switch 27. [ The gateway switch 27 allows the domain of the data center network 85 and the switch SW1 to appear as the same domain so that the service chain by the network functions NF4 to NF6 of the data center network 85 can be utilized.

도 10은 본 발명의 일 실시예에 따른 오픈플로우 스위치의 서비스 체이닝 제공 방법에 대한 순서도이다. 도 1 내지 도 9를 참조한다.10 is a flowchart illustrating a method of providing service chaining of an open flow switch according to an embodiment of the present invention. Please refer to Figs. 1 to 9.

도 10을 참조하면, 에지 스위치 단 중 제1 오픈플로우 스위치(SW1)는 UE(35)로부터 서비스 요청 패킷을 수신하면, 패킷-인 이벤트가 발생한 것을 알 수 있다(S510).Referring to FIG. 10, when the first open-flow switch SW1 of the edge switch stage receives the service request packet from the UE 35, it can know that a packet-in event has occurred (S510).

제1 오픈플로우 스위치(SW1)에 기지국(25)이 연결된 경우, 제1 오픈플로우 스위치(SW1)는 캡슐화된 패킷에서 소스 및 목적지 IP 주소를 추출할 수 있다(S515). 캡슐화된 패킷의 소스 및 목적지 IP 주소를 알 기 위해, 상술한 바와 같이 제1 오픈플로우 스위치(SW1)는 디캡 기능의 NF이 연결되는 것이 바람직하다.When the base station 25 is connected to the first open flow switch SW1, the first open flow switch SW1 may extract the source and destination IP addresses from the encapsulated packet (S515). In order to know the source and destination IP addresses of the encapsulated packet, it is preferable that the first open flow switch SW1 is connected to the NF of the decap function as described above.

제1 오픈플로우 스위치(SW1)는 서비스 요청 패킷을 분석하여 서비스의 타입에 따라 서비스 요청 패킷의 vLAN에 서비스 타입에 대응하는 값을 할당할 수 있다(S520).The first open flow switch SW1 may analyze the service request packet and allocate a value corresponding to the service type to the vLAN of the service request packet according to the service type (S520).

제1 오픈플로우 스위치(SW1)는 서비스 요청 패킷의 vLAN과 일치하는 엔트리가 있는지 플로우 테이블0을 탐색할 수 있다(S530). 일치하는 플로우 엔트리가 있는 경우, 플로우 처리 모듈(230)은 다음 플로우 테이블1과 패킷을 비교하여(S540), 테이블1에 소스의 IP와 일치하는 플로우 엔트리가 있는지 판단할 수 있다(S550). 플로우 엔트리가 있는 경우, 제1 오픈플로우 스위치(SW1)는 플로우 엔트리의 액션 또는 액션 세트를 실행하여 서비스 요청 패킷을 지정 포트로 포워딩할 수 있다(S560).The first open flow switch SW1 may search the flow table 0 for an entry matching the vLAN of the service request packet (S530). If there is a matching flow entry, the flow processing module 230 compares the packet with the next flow table 1 (S540), and determines whether there is a flow entry matching the IP of the source in the table 1 (S550). If there is a flow entry, the first open flow switch SW1 may execute the action or action set of the flow entry to forward the service request packet to the designated port (S560).

서비스 요청 패킷의 vLAN에 대응하는 플로우 엔트리가 플로우 테이블0에 없는 경우, 제1 오픈플로우 스위치(SW1)는 상위 계층의 제어기(10)로 패킷-인 메시지를 송신한 후(S570), 제어기(10)로부터 패킷을 전송할 정보를 포함하는 패킷-아웃 메시지를 수신할 수 있다(S580). 제1 오픈플로우 스위치(SW1)는 패킷-아웃 메시지 이외에 플로우 변경 메시지(Flow Mod Msg.)를 수신할 수 있다. 플로우 변경 메시지를 수신하는 경우, 제1 오픈플로우 스위치(SW1)는 플로우 변경 메시지에 구비된 플로우 엔트리를 플로우 테이블에 등록시킬 수 있다.When the flow entry corresponding to the vLAN of the service request packet is not in the flow table 0, the first open flow switch SW1 transmits a packet-in message to the controller 10 of the upper layer (S570) (Step S580). The packet-out message includes information for transmitting a packet from the mobile station to the base station. The first open-flow switch SW1 may receive a flow change message (Flow Mod Msg.) In addition to the packet-out message. When receiving the flow change message, the first open flow switch SW1 may register the flow entry provided in the flow change message in the flow table.

도 3과 같은 내부 블록을 구비하는 제1 오픈플로우 스위치(SW1)의 서비스 체이닝 방법과 달리, 코어 네트워크의 제2 오픈플로우 스위치(SW2)는 패킷-인 인벤트가 발생하면(S510), vLAN과 일치하는 엔트리가 있는지 탐색할 수 있다(S520). 제1 오픈플로우 스위치(SW1)에서 디캡 및 추출, vLAN 태깅이 이루어졌기 때문이다. 수신한 플로우에 경로 식별정보가 구비되어 있는 경우, 제2 오픈플로우 스위치(NF2)는 vLAN 또는 소스 IP가 아닌 경로 식별 정보와 대응하는 플로우 엔트리가 엔트리 DB에 있는지 판단할 수 있다. 경로 식별 정보를 매치 필드에 구비하는 플로우 엔트리는 제어기(10)에 의해 생성될 수 있다. 도 7과 같은 내부 구조를 구비하는 제2 오픈플로우 스위치(SW2)의 플로우 엔트리에 의한 패킷 포워딩은 논리 포트로 지정되는 것이 바람직하다.Unlike the service chaining method of the first open flow switch SW1 having the internal block as shown in FIG. 3, the second open flow switch SW2 of the core network, when a packet-in event occurs (S510) It is possible to search for a matching entry (S520). Decapping and extraction and vLAN tagging were performed in the first open flow switch SW1. When the received flow is provided with the path identification information, the second open flow switch NF2 can determine whether the flow entry corresponding to the path identification information other than the vLAN or the source IP exists in the entry DB. A flow entry having the path identification information in the match field can be generated by the controller 10. [ It is preferable that the packet forwarding by the flow entry of the second open flow switch SW2 having the internal structure as shown in Fig. 7 is designated as a logical port.

도 11은 제어기에서의 서비스 체이닝 제공 방법에 관한 순서도이다. 도 1 내지 도 10을 참조한다.11 is a flowchart illustrating a service chaining providing method in a controller. Please refer to Figs. 1 to 10.

도 11을 참조하면, 제어기(10)는 오픈플로우 스위치(20)으로부터 패킷-인 메시지를 수신할 수 있다(S610). Referring to FIG. 11, the controller 10 may receive a packet-in message from the open flow switch 20 (S610).

패킷-인 메시지를 수신하는 경우, 제어기(10)는 서비스 식별자 및 사용자 식별자를 위해 패킷-인 메시지의 패킷으로부터 vLAN 및 소스 IP를 추출할 수 있다(S615). 다만 제어기(10)는 패킷-인 메시지에 경로 식별 정보가 존재하는 경우, vLAN 및 소스 IP를 추출하지 않고, 경로 식별 정보가 패킷에 할당되도록 하는 플로우 엔트리를 검색하여 오픈플로우 스위치(20) 전송록 할 수 있다(S670).When receiving the packet-in message, the controller 10 may extract the vLAN and the source IP from the packet of the packet-in message for the service identifier and the user identifier (S615). However, when the path identification information exists in the packet-in message, the controller 10 does not extract the vLAN and the source IP, but searches the flow entry for assigning the path identification information to the packet, (S670).

제어기(10)는 수신 패킷의 vLAN에 대응하는 서비스가 서비스 테이블(192)에 있는지 판단할 수 있다(S620). 서비스 테이블(192)에 vLAN에 대응하는 서비스가 없는 경우, 제어기(10)는 해당 패킷이 드롭되도록 하는 메시지-아웃을 하위 스위치에 전송할 수 있다(S). 이후, 제어기(10)는 관리자에게 보고하거나 에러 처리 루틴에 의해, 패킷 전송 실패에 대한 관리를 할 수 있다. The controller 10 may determine whether a service corresponding to the vLAN of the received packet exists in the service table 192 (S620). If there is no service corresponding to vLAN in the service table 192, the controller 10 can send a message-out to the lower switch to drop the packet (S). Thereafter, the controller 10 can report to the manager or manage the packet transmission failure by an error processing routine.

제어기(10)는 vLAN에 대응하는 서비스가 서비스 테이블(192)에 있는 경우, 해당 서비스에 따른 사용자(즉, 소스 IP)가 사용자 테이블(193)에 있는지 판단할 수 있다(S630). vLAN에 대응하는 서비스에 연관된 사용자가 있는 경우 이에 연관된 NF 리스트를 추득하며(S635), 그렇지 않은 경우 기본 NF 리스트를 취득할 수 있다(S640). 제어기(10)는 NF 리스트에 관련된 플로우 엔트리가 데이터베이스(190)에 존재하는 지 판단할 수 있다. 관련 플로우 엔트리가 존재하면 데이터베이스(190)에 업그레이드 할 수 있다(S660). NF 리스트에 관련된 플로우 엔트리는, NF 리스트, 토폴로지 정보나 트래픽 상태 등에 따라 계산된 패킷 경로에 따른 결과물인 것이 바람직하다. 제어기(10)는 플로우 엔트리를 해당 경로의 오픈플로우 스위치(20)에 전송하는 플로우 변경 메시지를 전송할 수 있다.
If the service corresponding to the vLAN is present in the service table 192, the controller 10 may determine whether the user (i.e., source IP) according to the service is in the user table 193 (S630). If there is a user associated with the service corresponding to the vLAN, the associated NF list is acquired (S635). Otherwise, the basic NF list can be obtained (S640). The controller 10 may determine whether a flow entry associated with the NF list is present in the database 190. [ If there is an associated flow entry, the database 190 can be upgraded (S660). Preferably, the flow entry associated with the NF list is a result of a packet path calculated according to an NF list, topology information, traffic conditions, and the like. The controller 10 may send a flow change message to forward the flow entry to the open flow switch 20 of the path.

도 12는 본 발명의 다른 실시예에 따른 네트워크 시스템의 블록 구성도, 도 13은 본 발명의 일 실시예에 따른 NFv 리스트 데이터 베이스 테이블, 도 14는 본 발명의 일 실시예에 따른 아이디 패킷의 예시도, 도 15는 본 발명의 일 실시예에 따른 플로우 테이블이다. 도 1 내지 도 11을 참조한다.FIG. 12 is a block diagram of a network system according to another embodiment of the present invention, FIG. 13 is an NFv list database table according to an embodiment of the present invention, FIG. 14 is an example of an ID packet according to an embodiment of the present invention Figure 15 is a flow table according to an embodiment of the present invention. Please refer to Figs. 1 to 11. Fig.

도 12를 참조하면, 네트워크 시스템은 클라이언트, 서버, 오픈플로우 베이스 스위치(20), 오픈플로우 가상 스위치(20'), 및 복수의 NFv 그룹(G1~G4)를 포함할 수 있다.Referring to FIG. 12, the network system may include a client, a server, an open flow base switch 20, an open flow virtual switch 20 ', and a plurality of NFv groups G1 to G4.

클라이언트 및 서버는 도 1 및 도 6의 네트워크 디바이스에 대응될 수 있다. 클라이언트는 최종 단말단의 단말기 또는 이동통신망의 기지국이나 eNode 등 오픈플로우 스위치에 패킷을 전송하는 요소를 의미한다. 서버는 베이스 스위치(20)에서 패킷이 서비스 체이닝된 후 패킷을 수신하는 요소로, 다른 스위치나 라우터, 서버 컴퓨터 등이 이에 해당될 수 있다.The client and the server may correspond to the network devices of FIGS. 1 and 6. A client is an element that transmits a packet to an open-flow switch such as a terminal of the terminal end or a base station of the mobile communication network or an eNode. The server is an element for receiving a packet after the packet is churned in the base switch 20, and may be another switch, a router, a server computer, or the like.

베이스 스위치(20) 및 가상 스위치(20')는 오픈플로우 프로토콜의 스위치로, 도 1 또는 도 6의 오픈플로우 스위치에 대응될 수 있다. 베이스 스위치(20)는 클라이언트 및 서버와 직접 연결되어 있는 오픈플로우 스위치로, 자체적으로 NFv 서비스를 제공할 수 있다. 가상 스위치(20')는 베이스 스위치(20)와 직접 또는 다른 가상 스위치와 연결된 오픈플로우 스위치로 가상 머신에 의해 생성될 수 있으나, 이에 한정되지 않고 실제 물리적인 스위치일 수도 있다. 다만 NFv와의 연동을 위해 가상 스위치인 것이 바람직하다. 베이스 스위치(20) 및 가상 스위치(20')는 도 1 또는 도 6의 제어기(10)의 제어를 받을 수 있다.The base switch 20 and the virtual switch 20 'are switches of the open flow protocol and can correspond to the open flow switch of FIG. 1 or 6. The base switch 20 is an open flow switch directly connected to a client and a server, and can provide an NFv service by itself. The virtual switch 20 'may be created by a virtual machine with an open flow switch connected directly to the base switch 20 or with another virtual switch, but it is not so limited and may be an actual physical switch. However, it is preferable to use a virtual switch for interworking with NFv. The base switch 20 and the virtual switch 20 'may be under the control of the controller 10 of FIG. 1 or 6.

복수의 NFv 그룹(G1~G4)는 각기 다른 기능, 즉 서로 다른 서비스를 제공할 수 있다. 복수의 NFv 그룹(G1~G4)은 가상 스위치(20')에 연결되어, 통과하는 패킷에 일련의 서비스 즉 서비스 체인을 제공할 수 있다. 각 NFv 그룹은 하나 이상의 NFv 노드를 포함할 수 있다. 도 9와 같이, NFv 제1 그룹에 속한 NFv 노드들은 오픈플로우 스위치의 하나의 논리 입출력 포트로 집성(aggregation) 되어 연결되어 있는 것이 바람직하다. 동일 그룹에 속한 NFv 노드들이 오픈플로우 스위치의 여러 입출력 포트에 연결되어 있는 경우, 패킷 포워딩, 트래픽 분배, 로드 밸런싱 등이 플로우 테이블을 통해 제어 또는 관리될 수 있다. 플로우 테이블 변경을 통해 로드 밸런싱 등을 하는 것 보다 하나의 논리 입출력 포트로 로드 밸런싱 등을 하는 것이, 트래픽 제어 또는 트래픽 효율 등의 면에서 더 유리하다.The plurality of NFv groups G1 to G4 can provide different functions, that is, different services. A plurality of NFv groups G1 to G4 may be connected to the virtual switch 20 'to provide a series of services or service chains to the passing packets. Each NFv group may contain one or more NFv nodes. As shown in FIG. 9, it is preferable that the NFv nodes belonging to the first group of NFvs are aggregated and connected to one logical input / output port of the open flow switch. When NFv nodes belonging to the same group are connected to various input / output ports of an open flow switch, packet forwarding, traffic distribution, load balancing, and the like can be controlled or managed through a flow table. It is more advantageous in terms of traffic control or traffic efficiency to perform load balancing or the like on one logical input / output port rather than performing load balancing or the like by changing the flow table.

제어기(10)는 오픈플로우 스위치(20, 20')가 구동(power on; wake up)되면, 오픈플로우 스위치의 메시지를 통해, 스위치 간의 토폴로지 및 각 스위치에 연결된 네트워크 디바이스들(NFv)의 위치 정보를 알 수 있다.When the open flow switches 20 and 20 'are powered on, the controller 10 transmits the topology between the switches and the location information of the network devices NFv connected to the switches through the message of the open flow switch .

도 13을 참조하면, 제어기(10)는 NFv 그룹들의 종류 및 순서에 따른 가능한 모든 조합의 리스트를 생성하여 NFv 리스트들을 생성할 수 있다. 제어기(10)는 생성된 NFv 리스트들 각각에 체인 아이디를 생성하여 연관시킬 수 있다. 이러한 NFv 리스트 그룹과 체인 아이디 그룹은 NFv 리스트 데이터베이스로 제어기에 저장될 수 있다. 도 13은 NFv 리스트 데이터베이스의 일례로, NFv 리스트가 서비스 A인 경우엔 체인 아이디를 100, NFv 리스트가 서비스 A, B, 및 C 순인 경우엔 체인 아이디를 300으로 지정하였다. Referring to FIG. 13, the controller 10 may generate NFv lists by generating a list of all possible combinations according to the type and order of the NFv groups. The controller 10 may generate and associate a chain ID with each of the generated NFv lists. Such an NFv list group and a chain ID group can be stored in a controller as an NFv list database. FIG. 13 shows an example of the NFv list database. When the NFv list is service A, the chain ID is 100, and when the NFv list is service A, B, and C, the chain ID is 300.

체인 아이디는 오픈플로우 스위치에 유입되는 패킷의 일부 또는 오픈플로우 스위치에서 플로우 테이블의 인스트럭션에 의해 패킷에 부과되는 메타데이터의 일부일 수 있다. 체인 아이디는 도 7에서 언급된 추출 모듈(140)에서 추출된 서비스 식별자 및/또는 사용자 식별자와 연관될 수 있다. 즉 체인 아이디는 서비스 식별자 및 사용자 식별자 중 적어도 하나에 기초하여 생성되거나, 서비스 식별자 및 사용자 식별자 중 어느 하나에 대응하거나 동일한 값을 가질 수 있다.The chain ID may be part of the packet flowing into the open flow switch or part of the metadata loaded into the packet by the flow table instruction in the open flow switch. The chain ID may be associated with the service identifier and / or the user identifier extracted from the extraction module 140 mentioned in FIG. That is, the chain ID may be generated based on at least one of the service identifier and the user identifier, or may have the same value or correspond to one of the service identifier and the user identifier.

체인 아이디는 vLAN 필드 또는 vxLAN 필드를 이용할 수 있다. vxLAN 사이즈가 vLAN 보다 크므로, 서비스 체인 리스트를 미리 지정하기 위해서는, vxLAN 필드를 사용하는 것이 더 유리할 수 있다. 도 14(a)는 24비트의 vxLAN 필드를 체인아이디로 사용하는 것에 대한 예시이다.The chain ID may use the vLAN field or the vxLAN field. Since the vxLAN size is larger than vLAN, it may be more advantageous to use the vxLAN field to pre-specify the service chain list. 14 (a) shows an example of using a 24-bit vxLAN field as a chain ID.

제어기(10)는 NFv 리스트 데이터베이스 및 스위치 토폴로지에 기초하여, 각 체인 아이디에 따른 패킷의 데이터 경로를 도출한 후, 도출된 데이터 경로에 기초하여, 각 오픈플로우 스위치의 엔트리 리스트를 생성하여 해당 경로의 오픈플로우 스위치들에 엔트리 리스트에 따른 엔트리 변경 메시지를 전송할 수 있다. 이러한 엔트리 변경 메시지는 오픈플로우 스위치에 미리 전송하여, 각 오픈플로우 스위치가 해당 엔트리 정보를 가지게 하는 것이 바람직하다. 오픈플로우 스위치에서 패킷이 유입되면 즉시 처리할 수 있기 때문이다. 경우에 따라서는 사용률이 적을 것 같은 플로우에 해당하는 엔트리는 선-배포(proactive)하지 않고, 오픈플로우 스위치로부터 패킷-인 메시지를 수신한 경우에 해당 엔트리를 배포할 수도 있다.Based on the NFv list database and the switch topology, the controller 10 derives the data path of the packet according to each chain ID, generates an entry list of each open flow switch based on the derived data path, It is possible to transmit an entry change message according to the entry list to the open flow switches. It is preferable that such an entry change message is transmitted to the open flow switch in advance so that each open flow switch has the corresponding entry information. This is because the open flow switch can process packets immediately when they are received. In some cases, an entry corresponding to a flow with a low usage rate may not be proactive, but may distribute the entry when receiving a packet-in message from the open flow switch.

제어기(10)는 선 배포하는 플로우 엔트리의 타임아웃 값을 최대값 또는 0으로 지정할 수 있다. 타임아웃 값이 0인 경우 오픈플로우 스위치는 해당 엔트리의 히트(hit) 여부와 무관하게 엔트리가 존속할 수 있어, 영구 배포가 가능하다. 본 명세서가 작성되는 시점의 오픈플로우 스위치 백서 1.4.0은 타임아웃 값으로 idle_timeout 및 hard_timeout의 두 종류를 정의하고 있는데, idle_timeout 및 hard_timeout 모두 0으로 지정하는 것이, 엔트리 영구 존속을 위해 바람직하다. 필요에 의해 제어기(10)는 0으로 지정된 플로우 엔트리를 삭제하거나 0이 아닌 타임아웃 값으로 변경하는 메시지를 오픈플로우 스위치로 전송할 수 있다.The controller 10 can designate the timeout value of the flow entry to be distributed as the maximum value or zero. When the timeout value is 0, the open flow switch can persist the entry irrespective of whether or not the hit of the corresponding entry is maintained, and thus it is possible to permanently distribute the entry. At the time of writing this specification, the OpenFlow Switch White Paper 1.4.0 defines two kinds of timeout values, idle_timeout and hard_timeout. It is desirable to designate both idle_timeout and hard_timeout to be 0 for the permanent persistence of the entry. If necessary, the controller 10 can transmit a message to the open flow switch to delete the flow entry designated as 0 or to change it to a non-zero timeout value.

도 15는 오픈플로우 가상 스위치(20')의 플로우 테이블을 도시한 것이다. 가상 스위치(20')는 유입 패킷의 서비스 체인 아이디와 유입 포트 정보만의 매치 필드를 가지는 플로우 엔트리를 운영할 수 있다. 이에, 메모리를 절약할 수 있으며, 플로우 정보에 매칭하는 엔트리를 검색하는 시간을 단축할 수 있다.
Fig. 15 shows a flow table of the open-flow virtual switch 20 '. The virtual switch 20 'can operate a flow entry having a match field of only the incoming port information and the service chain ID of the incoming packet. Thus, the memory can be saved, and the time for searching for an entry matching the flow information can be shortened.

도 16은 본 발명의 또 다른 실시예에 따른 네트워크 시스템의 블록 구성도, 도 17은 본 발명의 다른 실시예에 따른 플로우 테이블, 도 18은 본 발명의 다른 실시예에 따른 스위치의 서비스 체인 제공 방법에 관한 순서도, 도 19는 본 발명의 일 실시예에 따른 제어기의 오픈플로우 스위치 제어 방법에 관한 순서도, 도 20은 제어기와 오픈플로우 스위치 사이의 메시지 흐름도이다. 도 1 내지 도 15를 참조한다.FIG. 16 is a block diagram of a network system according to another embodiment of the present invention, FIG. 17 is a flow table according to another embodiment of the present invention, FIG. 18 is a diagram illustrating a service chain providing method of a switch according to another embodiment of the present invention FIG. 19 is a flow chart of a method for controlling an open flow switch of a controller according to an embodiment of the present invention, and FIG. 20 is a message flow diagram between a controller and an open flow switch. 1 to 15.

도 16을 참조하면, 네트워크 시스템은 클라이언트, 서버, 오픈플로우 베이스 스위치(20), 제1 및 제2 오픈플로우 가상 스위치(20'-1, 20'-2), 및 복수의 NFv 그룹(G1~G4)를 포함할 수 있다. 도 12의 네트워크 시스템과 비교하면, 본 실시예에 따른 네트워크 시스템은 오픈플로우 가상 스위치의 개수가 2 이상인 경우를 예시한다. 가상 스위치가 2 이상인 경우, 도 14(b)와 같이 서비스 체인 아이디 이외에 오더 아이디가 필요하다. 이에 대한 자세한 설명은 후술한다.16, the network system includes a client, a server, an open flow base switch 20, first and second open flow virtual switches 20'-1 and 20'-2, and a plurality of NFv groups G1- G4). Compared with the network system of FIG. 12, the network system according to the present embodiment illustrates a case where the number of open-flow virtual switches is two or more. When the virtual switch is 2 or more, an order ID is required in addition to the service chain ID as shown in FIG. 14 (b). A detailed description thereof will be described later.

클라이언트 및 서버는 도 1 및 도 6의 네트워크 디바이스에 대응될 수 있다. 클라이언트는 최종 단말단의 단말기 또는 이동통신망의 기지국이나 eNode 등 오픈플로우 스위치에 패킷을 전송하는 요소를 의미한다. 서버는 베이스 스위치(20)에서 패킷이 서비스 체이닝된 후 패킷을 수신하는 요소로, 다른 스위치나 라우터, 서버 컴퓨터 등이 이에 해당될 수 있다.The client and the server may correspond to the network devices of FIGS. 1 and 6. A client is an element that transmits a packet to an open-flow switch such as a terminal of the terminal end or a base station of the mobile communication network or an eNode. The server is an element for receiving a packet after the packet is churned in the base switch 20, and may be another switch, a router, a server computer, or the like.

베이스 스위치(20) 및 제1 및 제2 가상 스위치(20'-1, 20'-2)는 오픈플로우 프로토콜의 스위치로, 도 1 또는 도 6의 오픈플로우 스위치에 대응될 수 있다. 베이스 스위치(20)는 클라이언트 및 서버와 직접 연결되어 있는 오픈플로우 스위치로, 자체적으로 NFv 서비스를 제공할 수 있다. 제1 및 제2 가상 스위치(20'-1, 20'-2)는 베이스 스위치(20)와 직접 또는 다른 가상 스위치와 연결된 오픈플로우 스위치로 가상 머신에 의해 생성될 수 있으나, 이에 한정되지 않고 실제 물리적인 스위치일 수도 있다. 다만 NFv와의 연동을 위해 가상 스위치인 것이 바람직하다. 베이스 스위치(20) 및 제1 및 제2 가상 스위치(20'-1, 20'-2)는 도 1 또는 도 6의 제어기(10)의 제어를 받을 수 있다.The base switch 20 and the first and second virtual switches 20'-1 and 20'-2 are switches of the open flow protocol and can correspond to the open flow switch of FIG. 1 or 6. The base switch 20 is an open flow switch directly connected to a client and a server, and can provide an NFv service by itself. The first and second virtual switches 20'-1 and 20'-2 may be generated by a virtual machine as an open flow switch connected to the base switch 20 directly or to another virtual switch, It may be a physical switch. However, it is preferable to use a virtual switch for interworking with NFv. The base switch 20 and the first and second virtual switches 20'-1 and 20'-2 may be under the control of the controller 10 of FIG. 1 or 6.

복수의 NFv 그룹(G1~G4)는 각기 다른 기능, 즉 서로 다른 서비스를 제공할 수 있다. 복수의 NFv 그룹(G1~G4)은 제1 및 제2 가상 스위치(20'-1, 20'-2)에 연결되어, 통과하는 패킷에 일련의 서비스 즉 서비스 체인을 제공할 수 있다. 각 NFv 그룹은 하나 이상의 NFv 노드를 포함할 수 있다. 도 9와 같이, NFv 제1 그룹에 속한 NFv 노드들은 오픈플로우 스위치의 하나의 논리 입출력 포트로 집성(aggregation) 되어 연결되어 있는 것이 바람직하다. 동일 그룹에 속한 NFv 노드들이 오픈플로우 스위치의 여러 입출력 포트에 연결되어 있는 경우, 패킷 포워딩, 트래픽 분배, 로드 밸런싱 등이 플로우 테이블을 통해 제어 또는 관리될 수 있다. 플로우 테이블 변경을 통해 로드 밸런싱 등을 하는 것 보다 하나의 논리 입출력 포트로 로드 밸런싱 등을 하는 것이, 트래픽 제어 또는 트래픽 효율 등의 면에서 더 유리하다.The plurality of NFv groups G1 to G4 can provide different functions, that is, different services. A plurality of NFv groups G1 to G4 may be connected to the first and second virtual switches 20'-1 and 20'-2 to provide a series of services or a service chain to the packets passing therethrough. Each NFv group may contain one or more NFv nodes. As shown in FIG. 9, it is preferable that the NFv nodes belonging to the first group of NFvs are aggregated and connected to one logical input / output port of the open flow switch. When NFv nodes belonging to the same group are connected to various input / output ports of an open flow switch, packet forwarding, traffic distribution, load balancing, and the like can be controlled or managed through a flow table. It is more advantageous in terms of traffic control or traffic efficiency to perform load balancing or the like on one logical input / output port rather than performing load balancing or the like by changing the flow table.

도 19를 참조하면, 제어기(10)는 오픈플로우 스위치(20, 20'-1, 20'-2)가 구동(power on; wake up)되면, 오픈플로우 스위치의 메시지를 통해, 스위치 간의 토폴로지 및 각 스위치에 연결된 네트워크 디바이스들(NFv)의 위치 정보를 알 수 있다(S410).19, when the open flow switches 20, 20'-1, and 20'-2 are powered on, the controller 10 sends a message of the open flow switch, The location information of the network devices NFv connected to the respective switches can be known (S410).

제어기(10)는 NFv 그룹들의 종류 및 순서에 따른 가능한 모든 조합의 리스트를 생성하여 NFv 리스트들을 생성할 수 있다(S420). 제어기(10)는 생성된 NFv 리스트들 각각에 서비스 체인 아이디를 생성하여 연관시킬 수 있다. 이러한 NFv 리스트들의 NFv 리스트 그룹과 서비스 체인 아이디들의 서비스 체인 아이디 그룹은 데이터베이스화될 수 있다. 이러한 데이터베이스는 NFv 리스트 데이터베이스로 제어기에 저장될 수 있다. 도 13은 NFv 리스트 데이터베이스의 일례로, NFv 리스트가 서비스 A인 경우엔 체인 아이디를 100, NFv 리스트가 서비스 A, B, 및 C 순인 경우엔 체인 아이디를 300으로 지정하였다. The controller 10 may generate NFv lists by generating a list of all possible combinations according to the type and order of the NFv groups (S420). The controller 10 may generate and associate a service chain ID with each of the generated NFv lists. The NFv list group of these NFv lists and the service chain ID group of service chain identities can be databaseized. Such a database may be stored in the controller as an NFv list database. FIG. 13 shows an example of the NFv list database. When the NFv list is service A, the chain ID is 100, and when the NFv list is service A, B, and C, the chain ID is 300.

서비스 체인 아이디는 오픈플로우 스위치에 유입되는 패킷의 일부 또는 오픈플로우 스위치에서 플로우 테이블의 인스트럭션에 의해 패킷에 부과되는 메타데이터의 일부일 수 있다. 체인 아이디는 도 7에서 언급된 추출 모듈(140)에서 추출된 서비스 식별자 및/또는 사용자 식별자와 연관될 수 있다. 즉 체인 아이디는 서비스 식별자 및 사용자 식별자 중 적어도 하나에 기초하여 생성되거나, 서비스 식별자 및 사용자 식별자 중 어느 하나에 대응하거나 동일한 값을 가질 수 있다.The service chain ID may be part of the packet flowing into the open flow switch or part of the metadata loaded into the packet by the flow table instruction in the open flow switch. The chain ID may be associated with the service identifier and / or the user identifier extracted from the extraction module 140 mentioned in FIG. That is, the chain ID may be generated based on at least one of the service identifier and the user identifier, or may have the same value or correspond to one of the service identifier and the user identifier.

체인 아이디는 vLAN 필드 또는 vxLAN 필드를 이용할 수 있다. vxLAN 사이즈가 vLAN 보다 크므로, 서비스 체인 리스트를 미리 지정하기 위해서는, vxLAN 필드를 사용하는 것이 더 유리할 수 있다. 도 14(a)는 24비트의 vxLAN 필드를 체인아이디로 사용하는 것에 대한 예시이고, 도 14(b)는 24비트의 vxLAN 필드 중 일부를 체인아이디로 사용하는 것에 대한 예시이다.The chain ID may use the vLAN field or the vxLAN field. Since the vxLAN size is larger than vLAN, it may be more advantageous to use the vxLAN field to pre-specify the service chain list. FIG. 14A is an example of using a 24-bit vxLAN field as a chain ID, and FIG. 14B is an example of using a part of 24-bit vxLAN fields as a chain ID.

제어기(10)는 NFv 리스트 데이터베이스 및 스위치 토폴로지에 기초하여, 각 체인 아이디에 따른 패킷의 데이터 경로를 도출한 후, 도출된 데이터 경로에 기초하여, 각 오픈플로우 스위치의 엔트리 리스트를 생성할 수 있다(S430). 생성된 엔트리들은 제어기(10)의 데이터베이스화되어 엔트리 DB로 저장될 수 있다. 제어기(10)는 해당 경로의 오픈플로우 스위치들에 엔트리 리스트에 따른 엔트리 변경 메시지를 전송할 수 있다(S440). 이러한 엔트리 변경 메시지는 오픈플로우 스위치에 미리 전송하여, 각 오픈플로우 스위치가 해당 엔트리 정보를 가지게 하는 것이 바람직하다. 즉 오픈플로우 스위치가 스위칭이나 라우팅 등의 작동을 하기 전에 해당 엔트리들을 배포하는 것이 바람직하다. 오픈플로우 스위치에서 패킷이 유입되면 즉시 처리할 수 있기 때문이다. 경우에 따라서는 사용률이 적을 것 같은 플로우에 해당하는 엔트리는 선-배포(proactive)하지 않고, 오픈플로우 스위치로부터 패킷-인 메시지를 수신한 경우에 해당 엔트리를 배포할 수도 있다.Based on the NFv list database and switch topology, the controller 10 may derive the data path of the packet according to each chain ID and then generate an entry list of each open flow switch based on the derived data path ( S430). The generated entries may be stored in the database of the controller 10 and stored in the entry DB. The controller 10 may transmit an entry change message according to the entry list to the open flow switches of the corresponding path (S440). It is preferable that such an entry change message is transmitted to the open flow switch in advance so that each open flow switch has the corresponding entry information. In other words, it is desirable to distribute the entries before the open flow switch performs operations such as switching or routing. This is because the open flow switch can process packets immediately when they are received. In some cases, an entry corresponding to a flow with a low usage rate may not be proactive, but may distribute the entry when receiving a packet-in message from the open flow switch.

제어기(10)는 미리 배포하는 플로우 엔트리의 타임아웃 값을 최대값 또는 0으로 지정할 수 있다. 타임아웃 값이 0인 경우 오픈플로우 스위치는 해당 엔트리의 히트(hit) 여부와 무관하게 엔트리가 존속할 수 있어, 영구 배포가 가능하다. 본 명세서가 작성되는 시점의 오픈플로우 스위치 백서 1.4.0은 타임아웃 값으로 idle_timeout 및 hard_timeout의 두 종류를 정의하고 있는데, idle_timeout 및 hard_timeout 모두 0으로 지정하는 것이, 엔트리 영구 존속을 위해 바람직하다. 필요에 의해 제어기(10)는 0으로 지정된 플로우 엔트리를 삭제하거나 0이 아닌 타임아웃 값으로 변경하는 메시지를 오픈플로우 스위치로 전송할 수 있다.The controller 10 can designate the timeout value of the flow entry to be distributed in advance as the maximum value or zero. When the timeout value is 0, the open flow switch can persist the entry irrespective of whether or not the hit of the corresponding entry is maintained, and thus it is possible to permanently distribute the entry. At the time of writing this specification, the OpenFlow Switch White Paper 1.4.0 defines two kinds of timeout values, idle_timeout and hard_timeout. It is desirable to designate both idle_timeout and hard_timeout to be 0 for the permanent persistence of the entry. If necessary, the controller 10 can transmit a message to the open flow switch to delete the flow entry designated as 0 or to change it to a non-zero timeout value.

도 18을 참조하면, 오픈플로우 스위치들(20, 20'-1, 20'-2) 각각은 제어기(10)로부터 플로우 엔트리를 미리 배포받아, 플로우 테이블로 저장할 수 있다(S310). 각 플로우 테이블에 대한 예시는 도 17과 같다. 도 17은 특히 서비스 체인 아이디가 350인 경우를 각기 예시한 것으로, 도 17(a)는 베이스 스위치(20), 도17(b)는 제1 가상 스위치(20'-1), 도 17(c)는 제2 가상 스위치(20'-2)의 플로우 테이블을 예시한다.Referring to FIG. 18, each of the open flow switches 20, 20'-1, and 20'-2 distributes the flow entry from the controller 10 in advance and stores the flow entry as a flow table (S310). An example of each flow table is shown in Fig. 17 (a), 17 (b), and 17 (c) show the base switch 20, the first virtual switch 20'-1, ) Illustrate a flow table of the second virtual switch 20'-2.

서비스 체인 아이디가 350인 경우의 서비스 리스트는 도 13을 참조하면, A -> C -> B 이다. 서비스 체인 아이디 및 인입 포트만으로 플로우 테이블의 매치 필드를 구성하는 경우 다음과 같은 문제점이 발생할 수 있다. 패킷이 베이스 스위치(20)의 3번 포트에서 제1 가상 스위치(20'-1)의 11번 포트로 유입되는 경우, 패킷을 NFv 그룹 G1(서비스 A) 및 G2(서비스 B) 중 어느 그룹으로 보내야할지 알 수 없다. 이에 본 발명은 NFv와 관련된 오픈플로우 스위치 또는 NFv 그룹을 통과할 때, 업데이트되는 값을 패킷 또는 테이블과 관련된 메타데이터에 삽입하여 정확한 출력 포트를 지정할 수 있도록 하였다. 이러한 패킷 구조는 도 14(b)의 패킷 구조와 같다. 앞서 설명한 바와 같이, vxLAN 필드의 일부는 서비스 체인 아이디로 나머지는 오더 아이디로 구성하여, NFv 그룹와 직접 연결된 오픈플로우 스위치가 2 이상이어도 패킷 흐름에 지장이 없도록 하였다.Referring to FIG. 13, the service list when the service chain ID is 350 is A -> C -> B. When the match field of the flow table is composed of only the service chain ID and the incoming port, the following problems may occur. When a packet flows from the third port of the base switch 20 to the port 11 of the first virtual switch 20'-1, the packet is transferred to any one of the NFv group G1 (service A) and G2 (service B) I do not know if I should send it. Accordingly, when the present invention passes through an open flow switch or an NFv group associated with an NFv, the updated value is inserted into the metadata related to a packet or a table so that an accurate output port can be specified. This packet structure is the same as the packet structure in Fig. 14 (b). As described above, part of the vxLAN field is composed of the service chain ID and the remainder is the order ID so that the flow of packets does not interfere even if there are two or more open flow switches directly connected to the NFv group.

오더 아이디 업데이트는 오픈플로우 스위치의 임의의 포트로 패킷이 유출될 때, 임의의 포트에서 패킷이 유입될 때, 및 NFv 그룹과 직접 연결되어 있는 다른 오픈플로우 스위치와 연결된 포트에서 패킷이 유입될 때 중 어느 한 경우 또는 조합으로 실행되도록 할 수 있다. 다만 이에 한정되지 않고, 패킷이 유출될 포트를 정확히 지정할 수 있는 오더 아이디 업데이트 요건이면 본 발명에 해당할 수 있다. 메모리 절약, 오더 아이디 업데이트 실행회수의 최소화 등을 위해, NFv 그룹과 직접 연결되어 있는 다른 오픈플로우 스위치에 연결된 포트에서 패킷이 업데이트되는 경우에 오더 아이디를 업데이트하는 것이 바람직하다. 아울러 도 13의 서비스 체인 아이디 100 또는 200과 같이, 하나의 오픈플로우 스위치에서 서비스 체이닝이 일어날 경우, 오더 아이디 업데이트는 이루어지지 않도록 하는 것이 자원 소모를 줄일 수 있어서 바람직하다.The order ID update is performed when a packet is flowed out to any port of the open flow switch, when a packet is received at an arbitrary port, and when a packet is received at a port connected to another open flow switch directly connected to the NFv group And can be executed in any one or a combination of them. However, the present invention is not limited to this and can be applied to the present invention as long as the order ID update requirement for accurately specifying a port through which a packet is to be delivered. It is desirable to update the order ID when the packet is updated on a port connected to another open flow switch directly connected to the NFv group, in order to save memory, minimize the number of times of order ID update execution, and the like. In addition, when service chaining occurs in one open flow switch, such as the service chain ID 100 or 200 in FIG. 13, it is preferable to prevent the update of the order ID from reducing resource consumption.

구체적으로 베이스 스위치(20)에 유입된 패킷의 서비스 체인 아이디가 350인 경우를 패킷의 흐름에 따라 예시한다. 오더 아이디의 초기값은 0으로 한다. 제어기(10)는 후술할 패킷 경로를 기초로 도 17의 (a) 내지 (c)와 같은 베이스 스위치(20), 제1 가상 스위치(20'-1), 및 제2 가상 스위치(20'-2)의 플로우 엔트리를 생성하여, 각 스위치에 엔트리 생성(변경) 메시지를 전송할 수 있다.Specifically, the case where the ID of the service chain of the packet flowing into the base switch 20 is 350 is illustrated according to the flow of the packet. The initial value of the order ID is 0. The controller 10 has the base switch 20, the first virtual switch 20'-1, and the second virtual switch 20'-1 as shown in Figs. 17A to 17C based on the packet path to be described later. 2), and send an entry creation (change) message to each switch.

우선 베이스 스위치(20)는 1번 포트로 유입된 패킷을 3번 포트로 포워딩한다. 해당 서비스 체인 아이디의 초기 경로이므로, 오더 아이디와 무관하다. 이에 오더 아이디의 매칭 여부는 생략할 수 있다. 오더 아이디 매칭 생략을 통해, 검색 시간을 단축시킬 수 있다. 이와 대응하는 플로우 엔트리의 오더 아이디는 마스크하여 구현될 수 있다.First, the base switch 20 forwards the packet to the port # 1 to the port # 3. Since this is the initial path of the service chain ID, it is independent of the order ID. It is possible to omit the matching of the order ID. By omitting the order ID matching, the search time can be shortened. The order ID of the corresponding flow entry can be implemented by masking.

제1 가상 스위치(20'-1)는 오더 아이디가 0인 11번 포트로 유입된 패킷을 1번 포트로 포워딩한다. 제1 가상 스위치(20'-1)는 2번 포트로 유입된 패킷을 12번 포트로 포워딩한다. 해당 서비스 체인 아이디의 경우, NFv 그룹에서 유입되는 모든 패킷은 베이스 스위치(20)의 12번 포트로 포워딩하면 되므로, 오더 아이디는 마스킹하고 인입 포트(in port)는 2번 또는 4번 포트로 매치 필드를 구성할 수 있다.The first virtual switch 20'-1 forwards the packet, which has arrived at port 11, whose order ID is 0, to the port 1. The first virtual switch 20'-1 forwards the packet to the port # 2 to the port # 12. In the case of the corresponding service chain ID, all packets coming from the NFv group are forwarded to the port 12 of the base switch 20, so that the order ID is masked, and the in port is the port 2 or 4, .

베이스 스위치(20)는 오더 아이디가 0인 4번 포트로 유입된 패킷의 오더 아이디를 업데이트(1단계 상승)한 후, 패킷을 5번 포트로 포워딩한다. NFv 그룹과 직접 연결되어 있는 오픈플로우 스위치에서 인입된 패킷이기 때문이다.The base switch 20 updates the order ID of the packet that has arrived at the port No. 4 whose order ID is 0 (by one step), and forwards the packet to the port No. 5. This is because it is an incoming packet from an open-flow switch that is directly connected to the NFv group.

제2 가상 스위치(20'-2)는 21번 포트로 유입된 패킷을 1번 포트로 포워딩한 후, 2번 포트로 유입된 패킷을 22번 포트로 포워딩한다. 해당 서비스 체인 아이디의 경우, 오더 아이디와 무관하게 패킷 포워딩을 할 수 있다. 다만 패킷 흐름에 에러가 있는 지 판단하기 위한 요건으로, 오더 아이디가 정확한지 판단하기 위해 오더 아이디를 마스크하지 않을 수도 있다. 도 17(c)를 참조하면, 제2 가상 스위치(20'-2)의 플로우 테이블 중 21번 포트로 유입되는 패킷과 관련된 플로우 엔트리에 오더 아이디가 매치되도록 하여 에러 탐색을 할 수 있도록 하였다.The second virtual switch 20'-2 forwards the packet, which has flowed into the port 21, to the port 1, and then forwards the packet flowing into the port 2 to the port 22. In the case of the service chain ID, packet forwarding can be performed irrespective of the order ID. However, as a requirement for determining whether there is an error in the packet flow, the order ID may not be masked to determine whether the order ID is correct. Referring to FIG. 17 (c), the order ID is matched with the flow entry related to the packet flowing into the port 21 of the flow table of the second virtual switch 20'-2 so that the error search can be performed.

베이스 스위치(20)는 6번 포트로 유입된 패킷을 3번 포트로 포워딩한다. 이 경우 오더 아이디는 무관하므로, 오더 아이디 필드는 마스킹할 수 있다. 다만 베이스 스위치(20)는 패킷을 3번 포트로 포워딩하기 전에 해당 패킷의 오더 아이디를 업데이트해야 한다.The base switch 20 forwards the packet to the port # 3 to the port # 3. In this case, since the order ID is irrelevant, the order ID field can be masked. However, the base switch 20 must update the order ID of the packet before forwarding the packet to port 3.

제1 가상 스위치(20'-1)는 오더 아이디가 2인 11번 포트로 유입된 패킷을 3번 포트로 포워딩한 한다. 제1 가상 스위치(20'-1)는 4번 포트로 유입된 패킷을 12번 포트로 포워딩한다. 이 경우, 오더 아이디는 무관하므로 마스킹할 수 있다. 앞서 서술한 바와 같이, 해당 플로우 엔트리는 인입 포트가 2번인 포트와 통합될 수 있다.The first virtual switch 20'-1 forwards the packet, which has entered the 11th port with the order ID of 2, to the third port. The first virtual switch 20'-1 forwards the packet to the port # 4 to the port # 12. In this case, since the order ID is irrelevant, the masking can be performed. As described above, the flow entry may be merged with the port whose incoming port is 2 times.

베이스 스위치(20)는 4번 포트로 유입된 패킷을 2번 포트로 포워딩하여 서버로 전송한다. 더 이상 오더 아이디가 사용되지 않으므로, 오더 아이디를 업데이트할 필요는 없다.The base switch 20 forwards the packet to the port # 2 and forwards the packet to the server. Since the Order ID is no longer used, it is not necessary to update the Order ID.

위에 설명한 바와 같이, 각 오픈플로우 스위치는 제어기(10)로부터 해당 플로우 엔트리를 미리 배포받아, 엔트리 테이블로 저장할 수 있다. 각 오픈플로우 스위치 중 베이스 스위치(20)에 대해 도 18의 순서도를 적용하면 다음과 같다. 베이스 스위치(20)에 클라이언트로부터 패킷이 유입되면(S315), 유입된 패킷에 서비스 체인 아이디가 있는지 판단할 수 있다(S320). 서비스 체인 아이디는 클라이언트 측에서 패킷에 지정되거나, 오픈플로우 스위치의 플로우 테이블을 통해 지정될 수 있다. 서비스 체인 아이디와 관련된 필드가 클라이언트에서 패킷에 미리 지정되어 올 수도 있다. 인입된 패킷 자체에 서비스 체인 아이디에 대응하는 필드 값이 있거나 해당 값이 없는 경우, 베이스 스위치(20)는 플로우 테이블에 서비스 체인 아이디를 부여할 수 있는 엔트리를 검색할 수 있다. 서비스 체인 아이디 부여 엔트리가 없는 경우, 베이스 스위치(20)는 제어기(10)로 해당 패킷을 패킷-인 메시지로 전송할 수 있다. 제어기(10)는 패킷-인 메시지를 받으면, 해당 패킷의 소스 IP 주소, 목적지 IP 주소, 소스 MAC 주소 등의 조합을 통해, 사용자 정보나 요청 서비스 종류를 파악할 수 있다. 제어기(10)는 파악된 사용자 정보 및/또는 요청 서비스에 대응하는 서비스 체인 아이디를 부여하도록 하는 액션을 패킷-아웃 메시지로 베이스 스위치(20)로 전송할 수 있다. 제어기(10)는 이후의 패킷이 플로우 테이블에 적용될 수 있도록 플로우 변경 메시지를 같이 전송할 수 있다. 베이스 스위치(20)의 플로우 테이블에 서비스 체인 아이디를 부여하는 플로우 엔트리가 있는 경우, 다중 플로우 테이블로 구성되어 파이프라인될 수 있다. 서비스 체인 아이디 부여 플로우 엔트리는 패킷-인 메시지 전에 미리 배포되어 베이스 스위치(20)의 플로우 테이블의 엔트리로 존재할 수도 있다.As described above, each open flow switch can distribute the corresponding flow entry from the controller 10 in advance and store it in the entry table. The flowchart of FIG. 18 is applied to the base switch 20 among the open flow switches as follows. When a packet is input from the client to the base switch 20 (S315), it can be determined whether there is a service chain ID in the incoming packet (S320). The service chain ID can be assigned to the packet on the client side or through the flow table of the open flow switch. A field associated with the service chain ID may be pre-specified in the packet at the client. If there is a field value corresponding to a service chain ID in the incoming packet itself or there is no corresponding value, the base switch 20 can search an entry capable of giving a service chain ID to the flow table. If there is no service chain ID entry, the base switch 20 can send the packet to the controller 10 in a packet-in message. Upon receipt of the packet-in message, the controller 10 can determine the user information and the requested service type through a combination of the source IP address, the destination IP address, and the source MAC address of the packet. The controller 10 may send an action to give the identified user information and / or the service chain ID corresponding to the requested service to the base switch 20 as a packet-out message. The controller 10 may transmit a flow change message so that subsequent packets can be applied to the flow table. If there is a flow entry for assigning a service chain ID to the flow table of the base switch 20, the flow table may be composed of multiple flow tables and pipelined. The service chain ID assignment flow entry may be distributed before the packet-in message and exist as an entry in the flow table of the base switch 20.

베이스 스위치(20)는 서비스 체인 아이디를 부여하라는 제어기(10)의 패킷-아웃 메시지 또는 서비스 체인 아이디를 부여하라는 플로우 엔트리에 의해, 인입된 패킷에 서비스 체인 아이디를 부여할 수 있다(S325). 베이스 스위치(20)는 서비스 체인 아이디가 있는 또는 부여된 패킷에 부합하는 플로우 엔트리가 있는지, 플로우 테이블을 검색한다(S330). 매칭되는 엔트리에 오더 아이디를 업데이트해야 하는지 판단하여(S335), 업데이트하라는 액션이 있으면 오더 아이디를 업데이트한다(S340). 이 후, 해당 엔트리의 피켓 포워딩 액션에 따라 해당 패킷을 포워딩한다(S345).The base switch 20 may assign the service chain ID to the incoming packet by a packet entry of the controller 10 requesting the service chain ID or a flow entry for giving the service chain ID (S325). The base switch 20 searches the flow table to see if there is a flow entry corresponding to a packet with or without a service chain ID (S330). It is determined whether the order ID should be updated in the matching entry (S335), and if there is an action to update the order ID, the order ID is updated (S340). Thereafter, the packet is forwarded according to the packet forwarding action of the entry (S345).

제어기(10)는 NFv 서비스와 관련된 엔트리의 타임아웃 값을 0 또는 최대값으로 지정하여, 해당 엔트리가 오픈플로우 스위치의 플로우 테이블에 영구적 또는 최대한 오래 존재하도록 할 수 있다. 그러나 사용률이 적은 플로우 엔트리는 삭제하는 것이 메모리 관리 면에 유리하다. 저 사용률 엔트리에 관리와 관련하여, 도 20을 참조한다. 임의의 오픈플로우 스위치는 NFv 서비스와 관련된 엔트리의 사용률을 체크하여, 저사용된 엔트리를 발견할 수 있다(S510). 이는 타임아웃 값이 0이 아닌 값으로 지정되고, 엔트리 히팅이 없어 기설정된 값으로 타임아웃 값이 감소하는 경우 또는 별도의 타이머를 이용하는 방법 등으로 저사용 엔트리를 오픈플로우 스위치에서 발견될 수 있다. 저사용 엔트리가 발견되면 해당 저사용 엔트리 정보를 제어기(10)로 전송할 수 있다(S520). 제어기(10)는 해당 저사용 엔트리를 삭제하도록 하는 메시지를 해당 오픈플로우 스위치로 전송하거나(S530), 해당 저사용 엔트리의 타임아웃 값을 변경하는 메시지를 전송(S540)함으로써, 저사용 엔트리를 오픈플로우 스위치에서 즉시 또는 임의의 시간이 경과한 후에 삭제되도록 할 수 있다.
The controller 10 may designate the timeout value of the entry related to the NFv service as 0 or a maximum value so that the entry exists permanently or as long as possible in the flow table of the open flow switch. However, it is advantageous in terms of memory management to delete a flow entry having a low usage rate. With respect to management of low utilization entries, refer to FIG. Any open flow switch may check the usage rate of the entry associated with the NFv service and find the used entry (S510). This can be found in the open flow switch when the timeout value is set to a non-zero value, the timeout value is decreased by a preset value without entry heating, or a method of using a separate timer or the like. If a low use entry is found, the low use entry information can be transmitted to the controller 10 (S520). The controller 10 transmits a message for deleting the low use entry to the corresponding open flow switch (S530), and transmits a message for changing the timeout value of the low use entry (S540) to open the low use entry It can be immediately deleted from the flow switch or after an arbitrary time has elapsed.

상기 본 발명은 하드웨어 또는 소프트웨어에서 구현될 수 있다. 구현은 상기 본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.The present invention can be implemented in hardware or software. The present invention can also be embodied as computer readable code on a computer readable recording medium. A computer-readable recording medium includes all kinds of recording apparatuses in which data that can be read by a computer system is stored. Examples of the computer-readable recording medium include a ROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, an optical data storage device, and the like, and may be implemented in the form of a carrier wave (for example, transmission via the Internet) . The computer readable recording medium may also be distributed over a networked computer system so that computer readable code can be stored and executed in a distributed manner. And functional programs, codes, and code segments for implementing the present invention can be easily inferred by programmers skilled in the art to which the present invention pertains.

본 발명의 실시예들은 여기에 설명된 방법들 중 하나가 실행되는 프로그램가능 컴퓨터 시스템으로 운영될 수 있는, 전자적으로 판독가능한 제어 신호들을 갖는 캐리어 웨이브를 포함할 수 있다. 본 발명의 실시예들은 프로그램 코드를 갖는 컴퓨터 프로그램 제품으로서 구현될 수 있으며, 프로그램 코드는 컴퓨터 프로그램이 컴퓨터 상에서 구동될 때 방법들 중 하나를 실행하기 위하여 운영된다. 프로그램 코드는 예를 들면 기계 판독가능 캐리어 상에 저장될 수 있다. 본 발명의 일실시예는 컴퓨터 프로그램이 컴퓨터 상에 구동될 때, 여기에 설명된 방법들 중 하나를 실행하기 위한 프로그램 코드를 갖는 컴퓨터 프로그램일 수 있다. 본 발명은 위에서 설명한 방법들 중 하나를 실행하기 위한 컴퓨터, 또는 프로그램가능 논리 장치를 포함할 수 있다. 위에서 설명한 방법들의 일부 또는 모든 기능을 실행하기 위하여 프로그램가능 논리 장치(예를 들면, 필드 프로그램가능 게이트 어레이, 상보성 금속 산화물 반도체 기반 논리 회로)가 사용될 수 있다.Embodiments of the present invention may include a carrier wave having electronically readable control signals, which may be operated with a programmable computer system in which one of the methods described herein is implemented. Embodiments of the present invention may be implemented as a computer program product having program code, wherein the program code is operated to execute one of the methods when the computer program is run on a computer. The program code may be stored on, for example, a machine readable carrier. One embodiment of the invention may be a computer program having program code for executing one of the methods described herein when the computer program is run on a computer. The present invention may include a computer, or programmable logic device, for performing one of the methods described above. A programmable logic device (e.g., a field programmable gate array, a complementary metal oxide semiconductor based logic circuit) may be used to perform some or all of the functions described above.

또한, 이상에서는 본 발명의 바람직한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안 될 것이다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments, but, on the contrary, It will be understood by those skilled in the art that various changes and modifications may be made by those skilled in the art without departing from the spirit and scope of the present invention.

Claims (15)

NF(Netwrok Function; 네트워크 기능) 서비스를 제공하는 NF 노드를 포함하는 NF 그룹으로 패킷을 포워딩하는 오픈플로우(openflow) 스위치로서,
다른 스위치 및 네트워크 디바이스 중 적어도 하나와 통신하는 포트부;
상기 오픈플로우 스위치를 제어하는 제어기와 통신하는 제어기 통신부;
플로우 테이블, 그룹 테이블, 및 미터 테이블 중 적어도 플로우 테이블을 구비하는 테이블 저장하는 저장부; 및
수신 패킷으로부터 플로우 정보를 추출하여 상기 테이블에 상기 추출된 플로우 정보가 존재하는 엔트리를 검색하고, 상기 검색된 엔트리에 기술된 절차에 따라 플로우의 액션을 처리하고, 플로우 처리 모듈에 의해 처리된 패킷을 지정한 포트로 출력하는 제어부를 포함하고,
상기 제어부는,
상기 수신 패킷에 대한 미리 정의된 서비스 체인 아이디에 대응하는 플로우 정보가 있는지 판단하는 플로우 검색 모듈; 및
상기 수신 패킷의 상기 서비스 체인 아이디에 대응하는 플로우 정보가 있는 경우, 상기 플로우 정보에 대응하는 인스트럭션을 처리하는 플로우 처리 모듈를 포함하고,
상기 서비스 체인 아이디는 NF 서비스들의 종류 및 순서가 정의된 NF 리스트와 대응하고,
상기 서비스 체인 아이디에 대응하는 플로우 정보는 상기 수신 패킷이 유입되는 포트 정보에 기초하여 업데이트될 수 있는 오더 아이디를 더 포함하고,
상기 인스트럭션 처리는, 상기 수신 패킷의 상기 서비스 체인 아이디 및 상기 오더 아이디에 대응하는 플로우 정보에 대응하는 액션을 처리하는 것을 포함하고,
상기 플로우 처리 모듈은 상기 수신 패킷이 유입되는 포트가 NF 그룹과 직접 연결되어 있는 다른 오픈플로우 스위치와 연결된 포트인 경우, 상기 오더 아이디를 업데이트하는, 서비스 체이닝이 가능한 오픈플로우 스위치.
An open flow switch for forwarding packets to an NF group that includes an NF node providing NF (Network Function) services,
A port portion for communicating with at least one of the other switch and the network device;
A controller communicating with a controller that controls the open flow switch;
A storage unit for storing a table having at least a flow table among a flow table, a group table, and a meter table; And
Extracts flow information from the received packet, searches for an entry in which the extracted flow information exists, processes the action of the flow according to the procedure described in the retrieved entry, and specifies the packet processed by the flow processing module And outputting to the port,
Wherein,
A flow retrieval module for determining whether there is flow information corresponding to a predefined service chain ID for the received packet; And
And a flow processing module for processing an instruction corresponding to the flow information when flow information corresponding to the service chain ID of the received packet is present,
The service chain ID corresponds to an NF list in which the types and order of NF services are defined,
The flow information corresponding to the service chain ID further includes an order ID that can be updated based on the port information into which the received packet is inputted,
Wherein the instruction processing includes processing an action corresponding to the service ID of the received packet and the flow information corresponding to the order ID,
Wherein the flow processing module updates the order ID when the port to which the received packet is input is a port connected to another open flow switch directly connected to the NF group.
삭제delete 삭제delete 제 1 항에 있어서,
상기 오더 아이디 업데이트는, NF 리스트와 관련된 NF 서비스가 하나의 오픈플로우 스위치에 있는 경우, 상기 오더 아이디 업데이트를 제외하는, 서비스 체이닝이 가능한 오픈플로우 스위치.
The method according to claim 1,
Wherein the order ID update is service chaining enabled except for the order ID update when the NF service associated with the NF list is in one open flow switch.
제 1 항에 있어서,
상기 인스트럭션 및 상기 오더 아이디 업데이트 중 적어도 하나와 관련된 복수의 플로우 엔트리 중 적어도 하나의 플로우 엔트리는 상기 오픈플로우 스위치를 제어하는 제어기로부터 상기 수신 패킷이 유입되기 전에 존재하는, 서비스 체이닝이 가능한 오픈플로우 스위치.
The method according to claim 1,
Wherein at least one of the plurality of flow entries associated with at least one of the instruction and the order ID update is present before the incoming packet is received from a controller that controls the open flow switch.
제 5 항에 있어서,
상기 적어도 하나의 플로우 엔트리는 상기 제어기로부터 삭제 명령 메시지를 받은 경우에만 플로우 테이블에서 삭제되는 것을 특징으로 하는, 서비스 체이닝이 가능한 오픈플로우 스위치.
6. The method of claim 5,
Wherein the at least one flow entry is deleted from the flow table only when it receives a delete command message from the controller.
제 5 항에 있어서,
상기 제어부는, 상기 플로우 엔트리가 기설정된 사용률 보다 낮은 사용률을 가지는 경우, 상기 제어기로 상기 기설정된 사용률 보다 낮은 사용률을 가지는 저사용 엔트리 정보를 전송하는, 서비스 체이닝이 가능한 오픈플로우 스위치.
6. The method of claim 5,
Wherein the controller transmits low usage entry information having a usage rate lower than the predetermined usage rate to the controller when the flow entry has a usage rate lower than a predetermined usage rate.
제 7 항에 있어서,
상기 제어기로부터 저사용률 플로우 엔트리 변경 메시지를 수신하는 제어기 통신부를 더 포함하고,
상기 제어부는 상기 저사용률 플로우 엔트리 변경 메시지에 대응하는 저사용률 플로우 엔트리가 유입된 패킷과 일정시간 이상 매칭되지 않으면, 상기 저사용률 플로우 엔트리를 파기하는, 서비스 체이닝이 가능한 오픈플로우 스위치.
8. The method of claim 7,
Further comprising a controller communication unit for receiving a low utilization flow entry change message from the controller,
Wherein the controller discards the low utilization flow entry if the low utilization flow entry corresponding to the low utilization flow entry change message is not matched with the incoming packet for a predetermined period of time or longer.
제 1 항에 있어서,
상기 제어부는, 상기 서비스 체인 아이디에 대응하는 플로우 정보가 없는 경우, 상기 오픈플로우 스위치를 제어하는 제어기로 상기 수신 패킷을 포워딩하는, 서비스 체이닝이 가능한 오픈플로우 스위치.
The method according to claim 1,
Wherein the control unit forwards the received packet to a controller that controls the open flow switch when there is no flow information corresponding to the service chain ID.
제 1 항에 있어서,
상기 NF 그룹은 상기 오픈플로우 스위치의 논리 포트에 연결되어 적어도 네트워크 상태에 기초하여 해당 NF 노드의 개수가 조정되는 것을 특징으로 하는, 서비스 체이닝이 가능한 오픈플로우 스위치.
The method according to claim 1,
Wherein the NF group is connected to a logical port of the open flow switch so that the number of NF nodes is adjusted based on at least a network state.
제 1 항에 있어서,
상기 서비스 체인 아이디와 대응하는 플로우 엔트리 필드는 메타데이터(metadata) 필드의 적어도 일부인 것을 특징으로 하는, 서비스 체이닝이 가능한 오픈플로우 스위치.
The method according to claim 1,
Wherein the service entry field and the corresponding flow entry field are at least a part of a metadata field.
제 1 항에 있어서,
상기 서비스 체인 아이디는 사용자 및 요청 서비스 종류 중 적어도 하나에 기초하여 결정되는 것을 특징으로 하는, 서비스 체이닝이 가능한 오픈플로우 스위치.
The method according to claim 1,
Wherein the service chain identity is determined based on at least one of a user and a requested service type.
제 1 항에 있어서,
상기 포트부는 가상화된 논리 포트를 더 포함하고,
상기 제어부는 상기 플로우 처리 모듈에 의해 처리된 패킷을 상기 플로우 처리 모듈에서 지정한 상기 포트부의 적어도 하나의 포트로 출력하는 패킷 처리 모듈을 더 포함하고,
상기 NF 그룹은 복수의 NF 노드를 구비하고,
상기 패킷 처리 모듈은,
상기 논리 포트에서 유입되는 패킷을 상기 복수의 NF 노드 중 어느 하나로 전달하는 발산 유닛; 및
상기 복수의 NF 노드 중 어느 하나로부터 유입되는 패킷을 상기 논리 포트로 전달하는 수렴 유닛을 구비하는, 서비스 체이닝이 가능한 오픈플로우 스위치.
The method according to claim 1,
Wherein the port further comprises a virtualized logical port,
Wherein the control unit further comprises a packet processing module for outputting the packet processed by the flow processing module to at least one port of the port unit designated by the flow processing module,
Wherein the NF group includes a plurality of NF nodes,
The packet processing module includes:
A divergence unit for transmitting a packet received from the logical port to one of the plurality of NF nodes; And
And a convergence unit for delivering a packet received from any one of the plurality of NF nodes to the logical port.
제 13 항에 있어서,
상기 발산 유닛은 상기 논리 포트에서 유입되는 패킷을 포트의 연결 상태 및 트래픽 상태 중 적어도 하나를 고려하여 상기 복수의 NF 노드 중 어느 하나로 전달하는, 서비스 체이닝이 가능한 오픈플로우 스위치.
14. The method of claim 13,
Wherein the diverting unit transfers the packet received from the logical port to one of the plurality of NF nodes in consideration of at least one of a connection state and a traffic state of the port.
제 13 항에 있어서,
상기 복수의 NF 노드는 트래픽 상태에 따라 개수가 조정되는 것을 특징으로 하는, 서비스 체이닝이 가능한 오픈플로우 스위치.
14. The method of claim 13,
Wherein the number of NF nodes is adjusted according to a traffic state.
KR1020150044610A 2015-03-30 2015-03-30 Openflow switch capable of service chaining KR101746105B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150044610A KR101746105B1 (en) 2015-03-30 2015-03-30 Openflow switch capable of service chaining

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150044610A KR101746105B1 (en) 2015-03-30 2015-03-30 Openflow switch capable of service chaining

Publications (2)

Publication Number Publication Date
KR20160116622A KR20160116622A (en) 2016-10-10
KR101746105B1 true KR101746105B1 (en) 2017-06-27

Family

ID=57145788

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150044610A KR101746105B1 (en) 2015-03-30 2015-03-30 Openflow switch capable of service chaining

Country Status (1)

Country Link
KR (1) KR101746105B1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102342734B1 (en) * 2017-04-04 2021-12-23 삼성전자주식회사 Software defined network controll devcie and method for setting transmission rule for data packet
KR102028650B1 (en) * 2018-11-23 2019-10-04 고려대학교 산학협력단 System and Method of Service Function Chaining in Programmable Switch
KR102348304B1 (en) * 2021-08-20 2022-01-11 주식회사 위즈온텍 Kubernetes-based dynamic network service chaining configuration method and device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101460048B1 (en) * 2013-10-24 2014-11-11 에스케이텔레콤 주식회사 Method and apparatus for control of dynamic service chaining by using tagging

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101460048B1 (en) * 2013-10-24 2014-11-11 에스케이텔레콤 주식회사 Method and apparatus for control of dynamic service chaining by using tagging

Also Published As

Publication number Publication date
KR20160116622A (en) 2016-10-10

Similar Documents

Publication Publication Date Title
KR101703088B1 (en) Aggregated routing method based on sdn and system thereof
US9654395B2 (en) SDN-based service chaining system
JP5440712B2 (en) COMMUNICATION SYSTEM, COMMUNICATION DEVICE, CONTROL DEVICE, PACKET FLOW TRANSFER ROUTE CONTROL METHOD, AND PROGRAM
KR101803332B1 (en) Network system for internet of things
US9887920B2 (en) Terminal, control device, communication method, communication system, communication module, program, and information processing device
CN111770028A (en) Method and network device for computer network
KR101527377B1 (en) Service chaining system based on software defined networks
KR101746105B1 (en) Openflow switch capable of service chaining
KR20180058594A (en) Software Defined Network/Test Access Port Application
KR101729944B1 (en) Method for supplying ip address by multi tunant network system based on sdn
KR20180058592A (en) Software Defined Network Controller
KR101797112B1 (en) Manegement system for container network
KR101739100B1 (en) Method of controlling openflow switch capable of service chaining and controller thereof
US8675669B2 (en) Policy homomorphic network extension
KR101739097B1 (en) Service chaining method in openflow switch
KR101679224B1 (en) Network system based on sdn capable traffice distribution
KR101707073B1 (en) Error detection network system based on sdn
KR101729945B1 (en) Method for supporting multi tunant by network system based on sdn
KR101729939B1 (en) Multi tunant network system based on sdn
KR101767472B1 (en) Method for changing data path by sdn-based controller
KR101797115B1 (en) Method for container networking of container network
KR20180058593A (en) Software Defined Network Whitebox Switch
KR20190054224A (en) Machine learning based network automation system architecture
KR20170006950A (en) Network flattening system based on sdn and method thereof
KR20180085887A (en) Integration api interface for container network

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