KR101864811B1 - 교환 장치, 제어기, 및 교환 장치 구성 방법, 및 패킷 처리 방법 및 시스템 - Google Patents

교환 장치, 제어기, 및 교환 장치 구성 방법, 및 패킷 처리 방법 및 시스템 Download PDF

Info

Publication number
KR101864811B1
KR101864811B1 KR1020167004283A KR20167004283A KR101864811B1 KR 101864811 B1 KR101864811 B1 KR 101864811B1 KR 1020167004283 A KR1020167004283 A KR 1020167004283A KR 20167004283 A KR20167004283 A KR 20167004283A KR 101864811 B1 KR101864811 B1 KR 101864811B1
Authority
KR
South Korea
Prior art keywords
database
packet
record
field
delete delete
Prior art date
Application number
KR1020167004283A
Other languages
English (en)
Other versions
KR20160033753A (ko
Inventor
시용 탄
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20160033753A publication Critical patent/KR20160033753A/ko
Application granted granted Critical
Publication of KR101864811B1 publication Critical patent/KR101864811B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • 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/70Virtual switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Telephonic Communication Services (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 실시예는 교환 장치 구성 방법을 제공한다. 상기 방법은: 상기 흐름표 중 적어도 하나에 제1 흐름 엔트리를 설정하는 단계를 포함하며, 상기 제1 흐름 엔트리는 매칭 필드를 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하고, 수신된 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용되어, 패킷과 매칭하는 제1 레코드를 획득하며, 상기 데이터베이스 내의 각각의 레코드는 제1 필드를 포함하고, 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용된다. 본 발명은 흐름 엔트리의 수를 감소한다.

Description

교환 장치, 제어기, 및 교환 장치 구성 방법, 및 패킷 처리 방법 및 시스템{SWITCHING DEVICE, CONTROLLER, METHOD FOR CONFIGURING SWITCHING DEVICE, AND METHOD AND SYSTEM FOR PROCESSING PACKET}
본 출원은 통신 분야에 관한 것이며, 특히 교환 장치, 제어기, 교환 장치 구성 방법, 및 패킷 처리 방법 및 시스템에 관한 것이다.
OpenFlow는 OpenFlow 제어기(OpenFlow Controller, 이하 제어기로 약칭)와 OpenFlow 교환기(OpenFlow Switch, 이하 교환기로 약칭) 간의 제어 프로토콜이다. 제어기는 흐름표(Flow Table)를 주로 사용하여 교환기의 행동을 제어한다. 흐름표는 교환기에 저장되어 있으며, 수 개의 흐름 엔트리(Flow Entry)로 구성되어 있다. 각각의 흐름 엔트리는 일반적으로 매칭 필드(Match Fields) 및 명령(Instructions)을 포함한다. 매칭 필드는 일반적으로 매칭되어야 하는 정보(이것은 다양한 패킷 헤더 필드 또는 교환기가 패킷을 수신하는 포트의 ID와 같은 정보일 수 있다)를 지정하고, 매칭되어야 하는 정보의 지정된 값을 제공하며, 여기서 지정된 값은 패킷에 관한 것이면서 매칭되어야 하는 정보의 실제 값과의 비교에 사용되며, 명령은 복수 유형의 명령을 포함하며 패킷에 대해 조작을 수행하도록 명령하는 데 사용되는 액션(Action)을 포함한다.
패킷을 수신한 후, 교환기는 수신된 패킷과 매칭되어야 하는 흐름표 내의 각각의 흐름 엔트리의 매칭 필드 간의 매칭을 수행한다(즉, 상기 패킷에 관한 것이면서 매칭되어야 하는 정보의 실제 값과 상기 매칭되어야 하는 흐름표 내의 각각의 흐름 엔트리의 매칭 필드의 지정된 값을 비교하여 이것들이 동일한 것인지를 판정한다). 상기 수신된 패킷과 상기 흐름 엔트리의 매칭 필드 간의 매칭이 성공이면(즉, 상기 흐름 엔트리의 매칭 필드의 내용이 상기 패킷에 관한 것이면서 매칭되어야 하는 정보의 실제 값과 같으면), 교환기는 매칭이 성공적인 흐름 엔트리 내의 명령에 따라 패킷을 처리하며, 상기 수신된 패킷과 상기 흐름 엔트리의 매칭 필드 간의 매칭이 실패이고, Table-Miss 흐름 엔트리(Table-Miss 흐름 엔트리는 OpenFlow 흐름표 내의 특별한 흐름 엔트리이고, 이 흐름 엔트리는 매칭 필드를 가지지 않으며, 즉 이 흐름 엔트리와 모든 패킷 간의 매칭은 성공할 수 있고, 이 흐름 엔트리는 최저의 매칭 순위를 가진다)가 흐름표에 존재하면, 교환기는 Table-Miss 흐름 엔트리에 따라 패킷을 처리하고(예를 들어, 패킷은 폐기될 수도 있고 처리를 위해 제어기로 송신될 수도 있다), Table-Miss 흐름 엔트리가 존재하지 않으면, 교환기는 흐름표의 속성에 따라 패킷을 처리하는 방법을 결정한다(예를 들어, 패킷은 폐기되도록 구성될 수도 있고 처리를 위해 제어기로 송신되도록 구성될 수도 있다). Table-Miss 흐름 엔트리 또는 흐름표의 속성에 따라, 패킷이 제어기로 송신되어야 하면, 매칭이 실패임을 지시하는 데 사용되는 제1 OpenFlow 메시지(제1 OpenFlow 메시지는 매칭이 실패인 패킷의 내용 중 일부 또는 전부를 포함한다)가 제어기로 송신된다. 제어기가 제1 OpenFlow 메시지를 수신하면, 제어기는 제2 OpenFlow 메시지를 사용하여 교환기에 흐름 엔트리를 전달하여, 매칭되어야 하는 흐름표에 새로운 흐름 엔트리를 구축하도록 교환기에 명령할 수 있으며, 매칭되어야 하는 정보에 관한 것이면서 새로운 흐름 엔트리의 매칭 필드 내에 있는 지정된 값은 상기 패킷에 관한 것이면서 매칭되어야 하는 정보의 실제 값과 매칭한다. 매칭되어야 하는 흐름표에 흐름 엔트리를 구축한 후, 교환기는 패킷에 대한 매칭을 다시 수행할 수 있다. 교환기가 보고하는 패킷과는 별개로, 제어기도 또한 제3 OpenFlow 메시지를 직접적으로 전달하여, 매칭되어야 하는 흐름표에 새로운 흐름 엔트리를 구축하도록 교환기에 명령할 수 있다.
교환기와 제어기 간의 OpenFlow 메시지를 감소시키기 위해, 종래기술은 교환기 구성 방법을 제공하며, 이 방법은 다음을 포함한다: 먼저, 교환기 내의 지정된 흐름표에 대해 동기화 흐름표 및 동기화 규칙이 구성되는데, 여기서 동기화 규칙은 지정된 흐름표 내의 흐름 엔트리를 동기화 흐름표 내의 흐름 엔트리로 변환하는 데 사용되고, 이에 의해 2개의 흐름표 간의 흐름 엔트리 부가, 수정, 및 삭제와 같은 갱신 조작의 동기화를 수행한다. 그런 다음, 교환기는 제어기에 의해 전달된 제2 또는 제3 OpenFlow 메시지를 수신하고, 제2 또는 제3 OpenFlow 메시지에 의해 지정된 흐름표 내의 흐름 엔트리를 부가, 수정, 또는 삭제하며, 제2 또는 제3 OpenFlow 메시지에 의해 지정된 흐름표가 동기화 흐름표를 가지고 있으면, 교환기는 동기화 흐름표 내에서, 동기화 규칙에 따라 흐름 엔트리에 대응하는 흐름 엔트리를 갱신한다.
종래기술에는 다음과 같은 문제가 있다: 지정된 흐름표 내의 흐름 엔트리가 갱신될 때, 동기화 흐름표 내의 흐름 엔트리도 동기해서 갱신되어야 한다. 동기화 갱신이 실패이면, 동기화 흐름표 내의 흐름 엔트리는 갱신되지 않으며, 그러므로 동기화 흐름표 내의 흐름 엔트리와 패킷 간의 매칭이 수행될 때, 오류 패킷 매칭이 수행된다. 또한, 교환기는 대량의 흐름 엔트리를 유지해야 하는데, 대량의 과잉 정보가 다른 흐름표 내의 흐름 엔트리에 존재하므로, 네트워킹 규모가 증가함에 따라 시스템 오버헤드가 증가한다.
다른 흐름표 내의 흐름 엔트리에 존재하는 과잉 정보를 제거하고, 흐름 엔트리의 양을 감소하기 위해, 본 발명의 실시예는 교환 장치, 제어기, 교환 장치 구성 방법, 및 패킷 처리 방법 및 시스템을 제공한다. 기술적 솔루션은 다음과 같다:
제1 관점에 따라, 본 발명의 실시예는 교환 장치 구성 방법을 제공하며, 상기 교환 장치에 하나 이상의 흐름표가 설정되어 있으며, 상기 방법은:
상기 흐름표 중 적어도 하나에 제1 흐름 엔트리를 설정하는 단계
를 포함하며,
상기 제1 흐름 엔트리는 매칭 필드를 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하고, 수신된 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용되며, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함하며, 상기 데이터베이스 내의 각각의 레코드는 제1 필드를 포함하고, 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용된다.
선택적으로, 상기 매칭 필드는 데이터베이스의 식별자를 지정하고, 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 식별자가 상기 데이터베이스의 식별자인 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용된다.
선택적으로, 상기 데이터베이스의 각각의 레코드는 제2 필드를 더 포함하고, 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용되며, 그리고
상기 제1 흐름 엔트리는 패킷 처리 명령을 더 포함하며, 상기 패킷 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 데이터베이스에 복수의 제1 레코드가 존재할 때,
상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드 중 최초의 제1 필드를 획득하며, 상기 패킷 처리 명령은, 상기 제1 레코드 내의 상기 최초의 제1 파라미터의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용되거나, 또는
상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드를 획득하며, 상기 패킷 처리 명령은, 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라, 상기 교환 장치에 의해 복제되는 복수의 패킷을 개별적으로 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며, 상기 레코드 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며,
상기 제1 수정 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 상기 제1 지정된 데이터베이스에 기록하도록 상기 교환 장치에 명령하는 데 사용되고,
상기 제2 수정 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정값으로 수정하도록 교환 장치에 명령하는 데 사용되고,
상기 부가 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용되며, 그리고
상기 삭제 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 우선순위를 포함하며, 상기 우선순위는 상기 패킷과 각각의 제1 흐름 엔트리 간의 매칭의 순서를 지시하는 데 사용되며, 상기 교환 장치 구성 방법은:
상기 흐름표 중 적어도 하나에 제2 흐름 엔트리를 설정하는 단계
를 더 포함하며,
상기 제2 흐름 엔트리의 우선순위는 상기 제1 흐름 엔트리의 우선순위보다 낮으며, 상기 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭하며, 상기 제2 흐름 엔트리는 레코드 부가 명령을 포함하고, 상기 레코드 부가 명령은 상기 제2 흐름 엔트리와 매칭하는 패킷에 따라 레코드를 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 교환 장치 구성 방법은:
조작자에 의해 전달된 구성 커맨드를 수신하고 상기 구성 커맨드에 따라 데이터베이스를 생성하는 단계; 또는
제어기에 의해 송신된 데이터베이스 생성 명령을 수신하고, 상기 데이터베이스 생성 명령에 따라 데이터베이스를 구축하는 단계
를 더 포함하며,
상기 데이터베이스 생성 명령은 데이터베이스 식별자 및 데이터베이스 필드 정보를 포함한다.
선택적으로, 상기 데이터베이스 생성 명령은 데이터베이스 속성 정보 및 통계 정보 중 적어도 하나를 포함하며, 상기 데이터베이스 속성 정보는 데이터베이스 내의 레코드의 최대 수, 데이터베이스 내의 레코드의 일시중지, 및 교환 장치가 데이터베이스 내의 레코드를 변경하는 것을 허용할지를 포함하며, 그리고 상기 통계 정보는 데이터베이스 내의 레코드의 총수, 데이터베이스와 패킷 간의 매칭의 총수, 매칭 성공 횟수의 총수, 및 각각의 레코드의 매칭 성공 횟수의 총수를 포함한다.
선택적으로, 상기 교환 장치 구성 방법은:
상기 제어기에 의해 송신된 데이터베이스 갱신 명령을 수신하고, 상기 데이터베이스 갱신 명령에 따라 데이터베이스를 갱신하는 단계
를 더 포함하며,
상기 데이터베이스 갱신 명령은 데이터베이스 삭제 명령 및 레코드 갱신 명령 중 적어도 하나를 포함하며, 상기 레코드 갱신 명령은 데이터베이스에 레코드를 부가하기, 데이터베이스로부터 레코드를 삭제하기, 및 데이터베이스 내의 레코드를 수정하기를 포함한다.
선택적으로, 상기 교환 장치 구성 방법은:
상기 제어기에 의해 송신된 질의 메시지를 수신하는 단계 - 상기 질의 메시지는 데이터베이스의 속성 정보, 데이터베이스 내의 레코드의 내용, 및 데이터베이스의 통계 정보 중 하나 이상에 대해 질의하는 데 사용됨 - ; 및
상기 제어기에 응답 메시지를 송신하는 단계
를 포함하며, 상기 응답 메시지는 상기 질의 메시지에 대응한다.
선택적으로, 상기 흐름표 중 적어도 하나에 제1 흐름 엔트리를 설정하는 단계 이전에, 상기 교환 장치 구성 방법은:
상기 데이터베이스가 존재하는지를 질의하는 단계;
상기 데이터베이스가 존재할 때, 상기 흐름표 중 적어도 하나에 제1 흐름 엔트리를 설정하는 단계; 및
상기 데이터베이스가 존재하지 않을 때, 상기 데이터베이스가 존재하지 않는다는 것을 나타내는 메시지를 제어기에 보고하는 단계
를 더 포함한다.
제2 관점에 따라, 본 발명의 실시예는 교환 장치 구성 방법을 제공하며, 상기 방법은:
제1 흐름 엔트리 설치 메시지를 송신하는 단계
를 포함하며,
상기 제1 흐름 엔트리 설치 메시지는 흐름표 식별자 및 제1 흐름 엔트리를 포함하며, 상기 제1 흐름 엔트리 설치 메시지는 상기 흐름표 식별자에 대응하는 흐름표에 제1 흐름 엔트리를 설정하도록 교환 장치에 명령하는 데 사용되고, 상기 제1 흐름 엔트리는 매칭 필드를 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하고, 수신된 패킷의 매칭되어야 하는 정보와 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용되며, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함하며, 상기 데이터베이스 내의 각각의 레코드는 제1 필드를 포함하고, 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용된다.
선택적으로, 상기 매칭 필드는 데이터베이스의 식별자를 지정하고, 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 식별자가 상기 데이터베이스의 식별자인 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용된다.
선택적으로, 상기 데이터베이스의 각각의 레코드는 제2 필드를 더 포함하고, 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용되며, 그리고
상기 제1 흐름 엔트리는 패킷 처리 명령을 더 포함하며, 상기 패킷 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 데이터베이스에 복수의 제1 레코드가 존재할 때,
상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드 중 최초의 제1 필드를 획득하며, 상기 패킷 처리 명령은, 상기 제1 레코드 내의 상기 최초의 제1 파라미터의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용되거나, 또는
상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드를 획득하며, 상기 패킷 처리 명령은, 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라, 상기 교환 장치에 의해 복제되는 복수의 패킷을 개별적으로 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며, 상기 레코드 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며,
상기 제1 수정 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 상기 제1 지정된 데이터베이스에 기록하도록 상기 교환 장치에 명령하는 데 사용되고,
상기 제2 수정 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정값으로 수정하도록 교환 장치에 명령하는 데 사용되고,
상기 부가 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용되며, 그리고
상기 삭제 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 우선순위를 포함하며, 상기 우선순위는 상기 패킷과 상기 제1 흐름 엔트리 각각 간의 매칭의 순서를 지시하는 데 사용되며, 상기 교환 장치 구성 방법은:
제2 흐름 엔트리 설치 메시지를 송신하는 단계
를 더 포함하며,
상기 제2 흐름 엔트리 설치 메시지는 흐름표 식별자 및 제2 흐름 엔트리를 포함하며, 상기 제2 흐름 엔트리의 우선순위는 상기 제1 흐름 엔트리의 우선순위보다 낮으며, 상기 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭하며, 상기 제2 흐름 엔트리는 레코드 부가 명령을 포함하고, 상기 레코드 부가 명령은 상기 제2 흐름 엔트리와 매칭하는 패킷에 따라 레코드를 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 교환 장치 구성 방법은:
상기 교환 장치에 데이터베이스 생성 명령을 송신하는 단계
를 더 포함하며,
상기 데이터베이스 생성 명령은 데이터베이스를 생성하도록 교환 장치에 명령하는 데 사용되고, 상기 데이터베이스 생성 명령은 데이터베이스 식별자 및 데이터베이스 필드 정보를 포함한다.
선택적으로, 상기 데이터베이스 생성 명령은 데이터베이스 속성 정보 및 통계 정보 중 적어도 하나를 포함하며, 상기 데이터베이스 속성 정보는 데이터베이스 내의 레코드의 최대 수, 데이터베이스 내의 레코드의 일시중지, 및 교환 장치가 데이터베이스 내의 레코드를 변경하는 것을 허용할지를 포함하며, 그리고 상기 통계 정보는 데이터베이스 내의 레코드의 총수, 데이터베이스와 패킷 간의 매칭의 총수, 매칭 성공 횟수의 총수, 및 각각의 레코드의 매칭 성공 횟수의 총수를 포함한다.
선택적으로, 상기 교환 장치 구성 방법은:
상기 교환 장치에 데이터베이스 갱신 명령을 송신하는 단계
를 더 포함하며,
상기 데이터베이스 갱신 명령은 데이터베이스 삭제 명령 및 레코드 갱신 명령 중 적어도 하나를 포함하며, 상기 레코드 갱신 명령은 데이터베이스에 레코드를 부가하기, 데이터베이스로부터 레코드를 삭제하기, 및 데이터베이스 내의 레코드를 수정하기를 포함한다.
선택적으로, 상기 교환 장치 구성 방법은:
상기 교환 장치에 질의 메시지를 송신하는 단계
를 더 포함하며,
상기 질의 메시지는 데이터베이스의 속성 정보, 데이터베이스 내의 레코드의 내용, 및 데이터베이스의 통계 정보 중 하나 이상에 대해 질의하는 데 사용된다.
선택적으로, 상기 교환 장치 구성 방법은:
상기 교환 장치에 의해 회신되고 상기 데이터베이스가 존재하지 않는다는 것을 표시하는 메시지를 수신하는 단계
를 더 포함한다.
제3 관점에 따라, 본 발명의 실시예는 패킷 처리 방법을 제공하며, 상기 방법은:
패킷을 수신하는 단계;
상기 패킷이 매칭되어야 하는 흐름표 내의 제1 흐름 엔트리의 매칭 필드에 따라, 상기 패킷의 매칭되어야 하는 정보의 값을 획득하는 단계 - 상기 제1 흐름 엔트리는 매칭 필드 및 패킷 처리 명령을 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하는 데 사용되며, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함함 - ;
상기 매칭 필드의 명령하에서, 상기 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하는 단계 - 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용됨 - ; 및
상기 패킷과 매칭하는 제1 레코드가 획득될 때 상기 패킷 처리 명령에 따라 패킷을 처리하는 단계
를 포함한다.
선택적으로, 상기 패킷 처리 명령에 따라 패킷을 처리하는 단계는:
상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하는 단계 - 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용됨 -
를 포함한다.
선택적으로, 상기 데이터베이스에 복수의 제1 레코드가 존재할 때, 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하는 단계 - 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용됨 - 는:
상기 제1 레코드 중 최초의 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하는 단계; 또는
상기 패킷을 복제하여 복수의 패킷을 획득하고, 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 복수의 패킷을 처리하는 단계
를 포함한다.
선택적으로, 상기 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며, 상기 패킷 처리 방법은:
상기 레코드 처리 명령의 명령하에서 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하는 단계
를 더 포함한다.
선택적으로, 상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며,
상기 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하는 단계는:
상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 제1 수정 명령에 따라 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 제1 지정된 데이터베이스에 기록하는 단계;
상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 제2 수정 명령에 따라 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정 값으로 수정하는 단계;
상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 부가 명령에 따라 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하는 단계; 및/또는
상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 삭제 명령에 따라 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하는 단계
를 포함한다.
선택적으로, 상기 제1 흐름 엔트리는 우선순위를 포함하며, 상기 우선순위는 상기 패킷과 각각의 제1 흐름 엔트리 간의 매칭의 순서를 지시하는 데 사용되며, 상기 흐름표에 제2 흐름 엔트리가 추가로 설정되며, 상기 제2 흐름 엔트리의 우선순위는 상기 제1 흐름 엔트리의 우선순위보다 낮으며, 상기 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭하며, 상기 제2 흐름 엔트리는 레코드 부가 명령을 포함하며, 상기 패킷 처리 방법은:
상기 패킷과 매칭하는 레코드가 데이터베이스에 존재하지 않을 때, 상기 패킷과 상기 제2 흐름 엔트리 간의 매칭을 수행하고 상기 매칭을 성공적으로 수행하며, 상기 레코드 부가 명령의 명령하에서 상기 패킷에 따라 레코드를 지정된 데이터베이스에 부가하는 단계
를 더 포함한다.
제4 관점에 따라, 본 발명의 실시예는 교환 장치를 제공하며, 상기 교환 장치에 하나 이상의 흐름표가 설정되어 있으며, 상기 장치는:
상기 흐름표 중 적어도 하나에 제1 흐름 엔트리를 설정하도록 구성되어 있는 제1 설정 모듈
을 포함하며,
상기 제1 흐름 엔트리는 매칭 필드를 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하고, 수신된 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용되며, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함하며, 상기 데이터베이스 내의 각각의 레코드는 제1 필드를 포함하고, 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용된다.
선택적으로, 상기 매칭 필드는 데이터베이스의 식별자를 지정하고, 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 식별자가 상기 데이터베이스의 식별자인 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용된다.
선택적으로, 상기 데이터베이스의 각각의 레코드는 제2 필드를 더 포함하고, 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용되며, 그리고
상기 제1 흐름 엔트리는 패킷 처리 명령을 더 포함하며, 상기 패킷 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 데이터베이스에 복수의 제1 레코드가 존재할 때,
상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드 중 최초의 제1 필드를 획득하며, 상기 패킷 처리 명령은, 상기 제1 레코드 내의 상기 최초의 제1 파라미터의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용되거나, 또는
상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드를 획득하며, 상기 패킷 처리 명령은, 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라, 상기 교환 장치에 의해 복제되는 복수의 패킷을 개별적으로 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며, 상기 레코드 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며,
상기 제1 수정 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 상기 제1 지정된 데이터베이스에 기록하도록 상기 교환 장치에 명령하는 데 사용되고,
상기 제2 수정 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정값으로 수정하도록 교환 장치에 명령하는 데 사용되고,
상기 부가 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용되며, 그리고
상기 삭제 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 우선순위를 포함하며, 상기 우선순위는 상기 패킷과 각각의 제1 흐름 엔트리 간의 매칭의 순서를 지시하는 데 사용되며, 상기 교환 장치는:
상기 흐름표 중 적어도 하나에 제2 흐름 엔트리를 설정하도록 구성되어 있는 제2 설정 모듈
을 더 포함하며,
상기 제2 흐름 엔트리의 우선순위는 상기 제1 흐름 엔트리의 우선순위보다 낮으며, 상기 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭하며, 상기 제2 흐름 엔트리는 레코드 부가 명령을 포함하고, 상기 레코드 부가 명령은 상기 제2 흐름 엔트리와 매칭하는 패킷에 따라 레코드를 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 교환 장치는:
조작자에 의해 전달된 구성 커맨드를 수신하고 상기 구성 커맨드에 따라 데이터베이스를 생성하거나; 또는
제어기에 의해 송신된 데이터베이스 생성 명령을 수신하고, 상기 데이터베이스 생성 명령에 따라 데이터베이스를 구축하도록 구성되어 있는 생성 모듈
을 더 포함하며,
상기 데이터베이스 생성 명령은 데이터베이스 식별자 및 데이터베이스 필드 정보를 포함한다.
선택적으로, 상기 데이터베이스 생성 명령은 데이터베이스 속성 정보 및 통계 정보 중 적어도 하나를 포함하며, 상기 데이터베이스 속성 정보는 데이터베이스 내의 레코드의 최대 수, 데이터베이스 내의 레코드의 일시중지, 및 교환 장치가 데이터베이스 내의 레코드를 변경하는 것을 허용할지를 포함하며, 그리고 상기 통계 정보는 데이터베이스 내의 레코드의 총수, 데이터베이스와 패킷 간의 매칭의 총수, 매칭 성공 횟수의 총수, 및 각각의 레코드의 매칭 성공 횟수의 총수를 포함한다.
선택적으로, 상기 교환 장치는:
상기 제어기에 의해 송신된 데이터베이스 갱신 명령을 수신하고, 상기 데이터베이스 갱신 명령에 따라 데이터베이스를 갱신하도록 구성되어 있는 갱신 모듈
을 더 포함하며,
상기 데이터베이스 갱신 명령은 데이터베이스 삭제 명령 및 레코드 갱신 명령 중 적어도 하나를 포함하며, 상기 레코드 갱신 명령은 데이터베이스에 레코드를 부가하기, 데이터베이스로부터 레코드를 삭제하기, 및 데이터베이스 내의 레코드를 수정하기를 포함한다.
선택적으로, 상기 교환 장치는:
상기 제어기에 의해 송신된 질의 메시지를 수신하고, 상기 제어기에 응답 메시지를 송신하도록 구성되어 있는 송수신기 모듈
을 포함하며,
상기 질의 메시지는 데이터베이스의 속성 정보, 데이터베이스 내의 레코드의 내용, 및 데이터베이스의 통계 정보 중 하나 이상에 대해 질의하는 데 사용되고, 상기 응답 메시지는 상기 질의 메시지에 대응한다.
선택적으로, 상기 흐름표 중 적어도 하나에 제1 흐름 엔트리를 설정하기 전에, 상기 교환 장치는:
상기 데이터베이스가 존재하는지를 질의하고, 상기 데이터베이스가 존재할 때, 상기 흐름표 중 적어도 하나에 제1 흐름 엔트리를 설정하며, 그리고 상기 데이터베이스가 존재하지 않을 때, 상기 데이터베이스가 존재하지 않는다는 것을 나타내는 메시지를 제어기에 보고하도록 구성되어 있는 질의 모듈
을 더 포함한다.
제5 관점에 따라, 본 발명의 실시예는 교환 장치를 제공하며, 상기 교환 장치에 하나 이상의 흐름표가 설정되어 있으며,
상기 교환 장치는 프로세서 및 네트워크 인터페이스를 포함하며,
상기 프로세서는 상기 흐름표 중 적어도 하나에 제1 흐름 엔트리를 설정하도록 구성되어 있으며,
상기 제1 흐름 엔트리는 매칭 필드를 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하고, 수신된 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용되며, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함하며, 상기 데이터베이스 내의 각각의 레코드는 제1 필드를 포함하고, 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용된다.
선택적으로, 상기 매칭 필드는 데이터베이스의 식별자를 지정하고, 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 식별자가 상기 데이터베이스의 식별자인 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용된다.
선택적으로, 상기 데이터베이스의 각각의 레코드는 제2 필드를 더 포함하고, 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용되며, 그리고
상기 제1 흐름 엔트리는 패킷 처리 명령을 더 포함하며, 상기 패킷 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 데이터베이스에 복수의 제1 레코드가 존재할 때,
상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드 중 최초의 제1 필드를 획득하며, 상기 패킷 처리 명령은, 상기 제1 레코드 내의 상기 최초의 제1 파라미터의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용되거나, 또는
상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드를 획득하며, 상기 패킷 처리 명령은, 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라, 상기 교환 장치에 의해 복제되는 복수의 패킷을 개별적으로 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며, 상기 레코드 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며,
상기 제1 수정 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 상기 제1 지정된 데이터베이스에 기록하도록 상기 교환 장치에 명령하는 데 사용되고,
상기 제2 수정 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정값으로 수정하도록 교환 장치에 명령하는 데 사용되고,
상기 부가 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용되며, 그리고
상기 삭제 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 우선순위를 포함하며, 상기 우선순위는 상기 패킷과 각각의 제1 흐름 엔트리 간의 매칭의 순서를 지시하는 데 사용되며,
상기 프로세서는 상기 흐름표 중 적어도 하나에 제2 흐름 엔트리를 설정하도록 추가로 구성되어 있으며,
상기 제2 흐름 엔트리의 우선순위는 상기 제1 흐름 엔트리의 우선순위보다 낮으며, 상기 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭하며, 상기 제2 흐름 엔트리는 레코드 부가 명령을 포함하고, 상기 레코드 부가 명령은 상기 제2 흐름 엔트리와 매칭하는 패킷에 따라 레코드를 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 네트워크 인터페이스는:
조작자에 의해 전달된 구성 커맨드를 수신하거나, 상기 제어기에 의해 데이터베이스 생성 명령을 수신하도록 구성되어 있으며,
상기 데이터베이스 생성 명령은 데이터베이스 식별자 및 데이터베이스 필드 정보를 포함하며,
상기 프로세서는:
상기 구성 커맨드에 따라 데이터베이스를 생성하거나; 또는
상기 데이터베이스 생성 명령에 따라 데이터베이스를 구축하도록 추가로 구성되어 있다.
선택적으로, 상기 데이터베이스 생성 명령은 데이터베이스 속성 정보 및 통계 정보 중 적어도 하나를 포함하며, 상기 데이터베이스 속성 정보는 데이터베이스 내의 레코드의 최대 수, 데이터베이스 내의 레코드의 일시중지, 및 교환 장치가 데이터베이스 내의 레코드를 변경하는 것을 허용할지를 포함하며, 그리고 상기 통계 정보는 데이터베이스 내의 레코드의 총수, 데이터베이스와 패킷 간의 매칭의 총수, 매칭 성공 횟수의 총수, 및 각각의 레코드의 매칭 성공 횟수의 총수를 포함한다.
선택적으로, 상기 네트워크 인터페이스는 상기 제어기에 의해 송신된 데이터베이스 갱신 명령을 수신하도록 구성되어 있으며,
상기 데이터베이스 갱신 명령은 데이터베이스 삭제 명령 및 레코드 갱신 명령 중 적어도 하나를 포함하며, 상기 레코드 갱신 명령은 데이터베이스에 레코드를 부가하기, 데이터베이스로부터 레코드를 삭제하기, 및 데이터베이스 내의 레코드를 수정하기를 포함하며,
상기 프로세서는 상기 데이터베이스 갱신 명령에 따라 데이터베이스를 갱신하도록 추가로 구성되어 있다.
선택적으로, 상기 네트워크 인터페이스는 상기 제어기에 의해 송신된 질의 메시지를 수신하도록 구성되어 있으며,
상기 질의 메시지는 데이터베이스의 속성 정보, 데이터베이스 내의 레코드의 내용, 및 데이터베이스의 통계 정보 중 하나 이상에 대해 질의하는 데 사용되며,
상기 프로세서는 상기 제어기에 응답 메시지를 송신하도록 추가로 구성되어 있으며, 상기 응답 메시지는 상기 질의 메시지에 대응한다.
선택적으로, 상기 프로세서는:
상기 데이터베이스가 존재하는지를 질의하고,
상기 데이터베이스가 존재할 때, 상기 흐름표 중 적어도 하나에 제1 흐름 엔트리를 설정하며, 그리고
상기 데이터베이스가 존재하지 않을 때, 상기 데이터베이스가 존재하지 않는다는 것을 나타내는 메시지를 제어기에 보고하도록 추가로 구성되어 있다.
제6 관점에 따라, 본 발명의 실시예는 제어기를 제공하며, 상기 제어기는:
제1 흐름 엔트리 설치 메시지를 송신하도록 구성되어 있는 제1 송신 모듈
을 포함하며,
상기 제1 흐름 엔트리 설치 메시지는 흐름표 식별자 및 제1 흐름 엔트리를 포함하며, 상기 제1 흐름 엔트리 설치 메시지는 상기 흐름표 식별자에 대응하는 흐름표에 제1 흐름 엔트리를 설정하도록 교환 장치에 명령하는 데 사용되고, 상기 제1 흐름 엔트리는 매칭 필드를 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하고, 수신된 패킷의 매칭되어야 하는 정보와 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용되며, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함하며, 상기 데이터베이스 내의 각각의 레코드는 제1 필드를 포함하고, 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용된다.
선택적으로, 상기 매칭 필드는 데이터베이스의 식별자를 지정하고, 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 식별자가 상기 데이터베이스의 식별자인 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용된다.
선택적으로, 상기 데이터베이스의 각각의 레코드는 제2 필드를 더 포함하고, 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용되며, 그리고
상기 제1 흐름 엔트리는 패킷 처리 명령을 더 포함하며, 상기 패킷 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 데이터베이스에 복수의 제1 레코드가 존재할 때,
상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드 중 최초의 제1 필드를 획득하며, 상기 패킷 처리 명령은, 상기 제1 레코드 내의 상기 최초의 제1 파라미터의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용되거나, 또는
상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드를 획득하며, 상기 패킷 처리 명령은, 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라, 상기 교환 장치에 의해 복제되는 복수의 패킷을 개별적으로 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며, 상기 레코드 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며,
상기 제1 수정 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 상기 제1 지정된 데이터베이스에 기록하도록 상기 교환 장치에 명령하는 데 사용되고,
상기 제2 수정 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정값으로 수정하도록 교환 장치에 명령하는 데 사용되고,
상기 부가 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용되며, 그리고
상기 삭제 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 우선순위를 포함하며, 상기 우선순위는 상기 패킷과 상기 제1 흐름 엔트리 각각 간의 매칭의 순서를 지시하는 데 사용되며, 상기 제어기는:
제2 흐름 엔트리 설치 메시지를 송신하도록 구성되어 있는 제2 송신 모듈
을 더 포함하며,
상기 제2 흐름 엔트리 설치 메시지는 흐름표 식별자 및 제2 흐름 엔트리를 포함하며, 상기 제2 흐름 엔트리의 우선순위는 상기 제1 흐름 엔트리의 우선순위보다 낮으며, 상기 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭하며, 상기 제2 흐름 엔트리는 레코드 부가 명령을 포함하고, 상기 레코드 부가 명령은 상기 제2 흐름 엔트리와 매칭하는 패킷에 따라 레코드를 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제어기는:
상기 교환 장치에 데이터베이스 생성 명령을 송신하도록 구성되어 있는 제3 송신 모듈
을 더 포함하며,
상기 데이터베이스 생성 명령은 데이터베이스를 생성하도록 교환 장치에 명령하는 데 사용되고, 상기 데이터베이스 생성 명령은 데이터베이스 식별자 및 데이터베이스 필드 정보를 포함한다.
선택적으로, 상기 데이터베이스 생성 명령은 데이터베이스 속성 정보 및 통계 정보 중 적어도 하나를 포함하며, 상기 데이터베이스 속성 정보는 데이터베이스 내의 레코드의 최대 수, 데이터베이스 내의 레코드의 일시중지, 및 교환 장치가 데이터베이스 내의 레코드를 변경하는 것을 허용할지를 포함하며, 그리고 상기 통계 정보는 데이터베이스 내의 레코드의 총수, 데이터베이스와 패킷 간의 매칭의 총수, 매칭 성공 횟수의 총수, 및 각각의 레코드의 매칭 성공 횟수의 총수를 포함한다.
선택적으로, 상기 제어기는:
상기 교환 장치에 데이터베이스 갱신 명령을 송신하도록 구성되어 있는 제4 송신 모듈
을 더 포함하며,
상기 데이터베이스 갱신 명령은 데이터베이스 삭제 명령 및 레코드 갱신 명령 중 적어도 하나를 포함하며,
상기 레코드 갱신 명령은 데이터베이스에 레코드를 부가하기, 데이터베이스로부터 레코드를 삭제하기, 및 데이터베이스 내의 레코드를 수정하기를 포함한다.
선택적으로, 상기 제어기는:
상기 교환 장치에 질의 메시지를 송신하도록 구성되어 있는 제5 송신 모듈
을 더 포함하며,
상기 질의 메시지는 데이터베이스의 속성 정보, 데이터베이스 내의 레코드의 내용, 및 데이터베이스의 통계 정보 중 하나 이상에 대해 질의하는 데 사용된다.
선택적으로, 상기 제어기는:
상기 교환 장치에 의해 회신되고 상기 데이터베이스가 존재하지 않는다는 것을 표시하는 메시지를 수신하도록 구성되어 있는 제1 수신 모듈
을 더 포함한다.
제7 관점에 따라, 본 발명의 실시예는 제어기를 제공하며, 상기 제어기는:
프로세서 및 네트워크 인터페이스를 포함하며,
상기 프로세서는 제1 흐름 엔트리 설치 메시지를 송신하도록 구성되어 있으며,
상기 제1 흐름 엔트리 설치 메시지는 흐름표 식별자 및 제1 흐름 엔트리를 포함하며, 상기 제1 흐름 엔트리 설치 메시지는 상기 흐름표 식별자에 대응하는 흐름표에 제1 흐름 엔트리를 설정하도록 교환 장치에 명령하는 데 사용되고, 상기 제1 흐름 엔트리는 매칭 필드를 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하고, 수신된 패킷의 매칭되어야 하는 정보와 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용되며, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함하며, 상기 데이터베이스 내의 각각의 레코드는 제1 필드를 포함하고, 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용된다.
선택적으로, 상기 매칭 필드는 데이터베이스의 식별자를 지정하고, 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 식별자가 상기 데이터베이스의 식별자인 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용된다.
선택적으로, 상기 데이터베이스의 각각의 레코드는 제2 필드를 더 포함하고, 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용되며, 그리고
상기 제1 흐름 엔트리는 패킷 처리 명령을 더 포함하며, 상기 패킷 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 데이터베이스에 복수의 제1 레코드가 존재할 때,
상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드 중 최초의 제1 필드를 획득하며, 상기 패킷 처리 명령은, 상기 제1 레코드 내의 상기 최초의 제1 파라미터의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용되거나, 또는
상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드를 획득하며, 상기 패킷 처리 명령은, 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라, 상기 교환 장치에 의해 복제되는 복수의 패킷을 개별적으로 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며, 상기 레코드 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며,
상기 제1 수정 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 상기 제1 지정된 데이터베이스에 기록하도록 상기 교환 장치에 명령하는 데 사용되고,
상기 제2 수정 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정값으로 수정하도록 교환 장치에 명령하는 데 사용되고,
상기 부가 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용되며, 그리고
상기 삭제 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 우선순위를 포함하며, 상기 우선순위는 상기 패킷과 상기 제1 흐름 엔트리 각각 간의 매칭의 순서를 지시하는 데 사용되며, 상기 프로세서는:
제2 흐름 엔트리 설치 메시지를 송신하도록 추가로 구성되어 있으며, 여기서 상기 제2 흐름 엔트리 설치 메시지는 흐름표 식별자 및 제2 흐름 엔트리를 포함하며, 상기 제2 흐름 엔트리의 우선순위는 상기 제1 흐름 엔트리의 우선순위보다 낮으며, 상기 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭하며, 상기 제2 흐름 엔트리는 레코드 부가 명령을 포함하고, 상기 레코드 부가 명령은 상기 제2 흐름 엔트리와 매칭하는 패킷에 따라 레코드를 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용된다.
삭제
삭제
선택적으로, 상기 프로세서는:
상기 교환 장치에 데이터베이스 생성 명령을 송신하도록 추가로 구성되어 있으며,
상기 데이터베이스 생성 명령은 데이터베이스를 생성하도록 교환 장치에 명령하는 데 사용되고, 상기 데이터베이스 생성 명령은 데이터베이스 식별자 및 데이터베이스 필드 정보를 포함한다.
선택적으로, 상기 데이터베이스 생성 명령은 데이터베이스 속성 정보 및 통계 정보 중 적어도 하나를 포함하며, 상기 데이터베이스 속성 정보는 데이터베이스 내의 레코드의 최대 수, 데이터베이스 내의 레코드의 일시중지, 및 교환 장치가 데이터베이스 내의 레코드를 변경하는 것을 허용할지를 포함하며, 그리고 상기 통계 정보는 데이터베이스 내의 레코드의 총수, 데이터베이스와 패킷 간의 매칭의 총수, 매칭 성공 횟수의 총수, 및 각각의 레코드의 매칭 성공 횟수의 총수를 포함한다.
선택적으로, 상기 프로세서는 상기 교환 장치에 데이터베이스 갱신 명령을 송신하도록 추가로 구성되어 있으며,
상기 데이터베이스 갱신 명령은 데이터베이스 삭제 명령 및 레코드 갱신 명령 중 적어도 하나를 포함하며, 상기 레코드 갱신 명령은 데이터베이스에 레코드를 부가하기, 데이터베이스로부터 레코드를 삭제하기, 및 데이터베이스 내의 레코드를 수정하기를 포함한다.
선택적으로, 상기 프로세서는 상기 교환 장치에 질의 메시지를 송신하도록 추가로 구성되어 있으며,
상기 질의 메시지는 데이터베이스의 속성 정보, 데이터베이스 내의 레코드의 내용, 및 데이터베이스의 통계 정보 중 하나 이상에 대해 질의하는 데 사용된다.
선택적으로, 상기 네트워크 인터페이스는, 상기 교환 장치에 의해 회신되고 상기 데이터베이스가 존재하지 않는다는 것을 표시하는 메시지를 수신하도록 구성되어 있다.
제8 관점에 따라, 본 발명의 실시예는 교환 장치를 제공하며, 상기 교환 장치는:
패킷을 수신하도록 구성되어 있는 제2 수신 모듈;
상기 패킷이 매칭되어야 하는 흐름표 내의 제1 흐름 엔트리의 매칭 필드에 따라, 상기 패킷의 매칭되어야 하는 정보의 값을 획득하도록 구성되어 있는 획득 모듈 - 상기 제1 흐름 엔트리는 매칭 필드 및 패킷 처리 명령을 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하는 데 사용되며, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함함 - ;
상기 매칭 필드의 명령하에서, 상기 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 구성되어 있는 매칭 모듈 - 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용됨 - ; 및
상기 패킷과 매칭하는 제1 레코드가 획득될 때 상기 패킷 처리 명령에 따라 패킷을 처리하도록 구성되어 있는 제1 프로세싱 모듈
을 포함한다.
선택적으로, 상기 제1 프로세싱 모듈은 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하도록 구성되어 있으며,
상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용된다.
선택적으로, 상기 데이터베이스에 복수의 제1 레코드가 존재할 때, 상기 제1 프로세싱 모듈은:
상기 제1 레코드 중 최초의 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하거나; 또는
상기 패킷을 복제하여 복수의 패킷을 획득하고, 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 복수의 패킷을 처리하도록 구성되어 있다.
선택적으로, 상기 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며, 상기 제1 프로세싱 모듈은 상기 레코드 처리 명령의 명령하에서 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하도록 추가로 구성되어 있다.
선택적으로, 상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며,
상기 제1 프로세싱 모듈은:
상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 제1 수정 명령에 따라 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 제1 지정된 데이터베이스에 기록하고;
상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 제2 수정 명령에 따라 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정 값으로 수정하고;
상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 부가 명령에 따라 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하며; 및/또는
상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 삭제 명령에 따라 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하도록 구성되어 있다.
선택적으로, 상기 제1 흐름 엔트리는 우선순위를 포함하며, 상기 우선순위는 상기 패킷과 각각의 제1 흐름 엔트리 간의 매칭의 순서를 지시하는 데 사용되며, 상기 흐름표에 제2 흐름 엔트리가 추가로 설정되며, 상기 제2 흐름 엔트리의 우선순위는 상기 제1 흐름 엔트리의 우선순위보다 낮으며, 상기 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭하며, 상기 제2 흐름 엔트리는 레코드 부가 명령을 포함하며, 상기 교환 장치는:
상기 패킷과 매칭하는 레코드가 데이터베이스에 존재하지 않을 때, 상기 패킷과 상기 제2 흐름 엔트리 간의 매칭을 수행하고 상기 매칭을 성공적으로 수행하며, 상기 레코드 부가 명령의 명령하에서 상기 패킷에 따라 레코드를 지정된 데이터베이스에 부가하도록 구성되어 있는 제2 프로세싱 모듈
을 더 포함한다.
제9 관점에 따라, 본 발명의 실시예는 교환 장치를 제공하며, 상기 교환 장치는 프로세서 및 네트워크 인터페이스를 포함하며,
상기 프로세서는:
패킷을 수신하고;
상기 패킷이 매칭되어야 하는 흐름표 내의 제1 흐름 엔트리의 매칭 필드에 따라, 상기 패킷의 매칭되어야 하는 정보의 값을 획득하며 - 상기 제1 흐름 엔트리는 매칭 필드 및 패킷 처리 명령을 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하는 데 사용되며, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함함 - ;
상기 매칭 필드의 명령하에서, 상기 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하며 - 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용됨 - ; 그리고
상기 패킷과 매칭하는 제1 레코드가 획득될 때 상기 패킷 처리 명령에 따라 패킷을 처리하도록 구성되어 있다.
선택적으로, 상기 프로세서는:
상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하도록 구성되어 있으며, 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용된다.
선택적으로, 상기 데이터베이스에 복수의 제1 레코드가 존재할 때, 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하는 것 - 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용됨 - 에 더하여, 상기 프로세서는:
상기 제1 레코드 중 최초의 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하거나; 또는
상기 패킷을 복제하여 복수의 패킷을 획득하고, 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 복수의 패킷을 처리하도록 추가로 구성되어 있다.]
선택적으로, 상기 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며,
상기 프로세서는 상기 레코드 처리 명령의 명령하에서 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하도록 추가로 구성되어 있다.
선택적으로, 상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며,
상기 프로세서는:
상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 제1 수정 명령에 따라 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 제1 지정된 데이터베이스에 기록하고;
상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 제2 수정 명령에 따라 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정 값으로 수정하고;
상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 부가 명령에 따라 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하며; 및/또는
상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 삭제 명령에 따라 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하도록 추가로 구성되어 있다.
선택적으로, 상기 제1 흐름 엔트리는 우선순위를 포함하며, 상기 우선순위는 상기 패킷과 각각의 제1 흐름 엔트리 간의 매칭의 순서를 지시하는 데 사용되며, 상기 흐름표에 제2 흐름 엔트리가 추가로 설정되며, 상기 제2 흐름 엔트리의 우선순위는 상기 제1 흐름 엔트리의 우선순위보다 낮으며, 상기 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭하며, 상기 제2 흐름 엔트리는 레코드 부가 명령을 포함하며, 상기 프로세서는:
상기 패킷과 매칭하는 레코드가 데이터베이스에 존재하지 않을 때, 상기 패킷과 상기 제2 흐름 엔트리 간의 매칭을 수행하고 상기 매칭을 성공적으로 수행하며, 상기 레코드 부가 명령의 명령하에서 상기 패킷에 따라 레코드를 지정된 데이터베이스에 부가하도록 추가로 구성되어 있다.
제10 관점에 따라, 본 발명의 실시예는 패킷 처리 시스템을 제공하며, 상기 시스템은 전술한 제어기 및 전술한 교환 장치를 포함한다.
본 발명의 실시예에서, 흐름표 내의 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용하여 저장되고, 데이터베이스는 많은 레코드를 포함하며, 레코드도 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 모든 값은 다르며, 명령이 같은 흐름 엔트리가 하나의 흐름 엔트리로 간략화될 수 있으며, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리에 존재하는 과잉 정보를 제거하며, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 값이 데이터베이스에 존재하지 않을 때, 부가의 조작을 1회만 실시하여 매칭되어야 하는 정보의 값을 데이터베이스에 부가하고, 부가적인 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험을 회피한다.
본 발명의 실시예의 기술적 솔루션을 더 명확하게 설명하기 위해, 이하에서는 본 발명의 실시예를 설명하는 데 필요한 첨부된 도면에 대해 간략하게 설명한다. 당연히, 이하의 실시예의 첨부된 도면은 본 발명의 일부의 실시예에 지나지 않으며, 당업자라면 창조적 노력 없이 첨부된 도면으로부터 다른 도면을 도출해낼 수 있을 것이다.
도 1은 본 발명의 실시예에 따른 OpenFlow 시스템의 통상적인 애플리케이션 시나리오에 대한 개략도이다.
도 2는 본 발명의 실시예에 따라 OpenFlow 교환기가 패킷을 처리하는 프로세스에 대한 개략도이다.
도 3은 본 발명의 실시예에 따른 교환 장치 구성 방법에 대한 흐름도이다.
도 4는 본 발명의 실시예에 따른 다른 교환 장치 구성 방법에 대한 흐름도이다.
도 5 내지 도 8은 본 발명의 실시예에 따른 패킷 처리 방법에 대한 흐름도이다.
도 9 및 도 10은 본 발명의 실시예에 따른 교환 장치에 대한 개략적인 구조도이다.
도 11 및 도 12는 본 발명의 실시예에 따른 제어기에 대한 개략적인 구조도이다.
도 13 및 도 14는 본 발명의 실시예에 따른 다른 교환 장치에 대한 개략적인 구조도이다.
도 15는 본 발명의 실시예에 따른 패킷 처리 시스템에 대한 개략적인 구조도이다.
본 발명의 실시예의 목적, 기술적 솔루션, 및 이점을 더 잘 이해할 수 있도록 하기 위해, 이하에서는 본 발명의 실시예의 첨부된 도면을 참조하여 본 발명의 실시예에 따른 기술적 솔루션에 대해 명확하고 완전하게 설명한다.
본 발명의 실시예는 제어 평면이 포워딩 평면으로부터 분리되어 있는 네트워크 아키텍처에 적용 가능하며, 특히 OpenFlow 네트워크 아키텍처에 적용 가능하다. 제어 평면은 중앙집중식으로 설치될 수 있고, 포워딩 평면은 실제의 요구에 따라 분산 방식으로 복수의 물리적 장치상에 설치될 수 있으며, 제어 평면은 포워딩 평면을 제어하며, 이에 의해 라우팅 및 스위칭과 같은 다양한 네트워크 기능을 실행할 수 있다.
본 발명의 실시예에서 제공하는 기술적 솔루션을 잘 이해할 수 있도록 하기 위해, 이하에서 OpenFlow 네트워크 아키텍처를 예로 들어, 본 발명의 실시예의 통상적인 애플리케이션 시나리오를 소개하지만, 본 발명은 이에 제한되지 않는다. OpenFlow 네트워크 아키텍처에서, 제어 평면의 네트워크 요소를 OpenFlow 제어기(제어기로 약칭)라 하고, 포워딩 평면의 네트워크 요소를 OpenFlow 교환기(교환기로 약칭)라 한다. 도 1을 참조하면, 교환기 S는 제어기 C에 연결되어 있다. 교환기 S는 OpenFlow 프로토콜에 부합하는 시그널링 정보를 사용함으로써 제어기 C와 통신한다. 교환기 S는 P1, P2, ..., 및 Px로 각각 표시된 x개의 포트를 가지며, 여기서 x는 자연수이고 x≥2이며, 각각의 포트는 호스트에 연결될 수 있고, 포트 Px에 연결된 호스트는 PCx로 표시될 수 있다. 도 1에 도시된 시나리오에서, 호스트 PCx는 교환기 S의 포트 Px에 직접 연결되어 있고, 본 발명의 실시예의 다른 애플리케이션 시나리오에서, 교환기 S는 다른 교환기를 사용하여 제어기 C 및 호스트에 개별적으로 연결될 수도 있다. 본 발명의 실시예는 교환기 S가 제어기 C 및 호스트 PCx에 개별적으로 연결되는 방식에 제한을 두지 않는다.
교환기 S는 하나 이상의 흐름표를 저장할 수 있다. 각각의 흐름표는 고유한 식별자(Identity, ID로 약칭)를 가지며, 본 발명의 실시예에서, ID는 흐름표 ID라 한다. 각각의 흐름표는 수 개의 흐름 엔트리로 형성된다.
표 1을 참조하면, 흐름 엔트리의 내용은 매칭 필드(Match Fields) 및 명령(Instructions)을 포함한다.
Match Fields Instructions
흐름표 ID는 흐름 엔트리가 속하는 흐름표를 표시하는 데 사용된다. 매칭 필드는 패킷의 헤더 필드 또는 패킷과 관련된 다른 정보(교환기가 패킷을 수신하는 진입 포트의 ID 및 및 패킷과 연관된 메타데이터를 포함하며, 이에 대해서는 이하의 상세한 설명을 참조할 수 있다)와 같이 다양한 유형의 정보로 매칭이 수행되도록, 매칭되어야 하는 정보를 지정하고, 매칭되어야 하는 정보의 지정된 값을 제공하는 데 사용된다. 명령은 매칭이 성공적으로 수행되는 패킷에 대해 조작(操作)을 수행하는 방법을 명령하는 데 사용된다. 일반적으로, 제어기 C의 명령하에서, 교환기 S는 흐름표에 흐름 엔트리를 부가하고, 흐름 엔트리를 삭제하고, 흐름 엔트리를 갱신한다. 또한, 흐름 엔트리의 내용은 우선순위(Priority)를 더 포함한다. 우선순위는 패킷과 흐름표 내의 각각의 흐름 엔트리 간의 매칭의 순서를 지시하는 데 사용된다. 또한, 흐름 엔트리는 카운터(Counters), 일시중지(Timeouts), 및 Cookie를 더 포함한다.
교환기 S가 호스트 PCx에 의해 송신된 패킷을 수신한 후, 매칭되어야 하는 제1 흐름표(일반적으로 흐름표 ID 값이 최소인 흐름표) 내의 모든 흐름 엔트리와 패킷 간의 매칭이 수행되기 시작한다. 매칭이 실패이면, 그 패킷은 폐기되거나 처리를 위해 제어기에 송신될 수 있다(이것은 흐름표 내의 Table-Miss 흐름 엔트리를 실행함으로써 완료될 수 있다). 매칭이 성공이면, 매칭이 성공적으로 수행되는 흐름 엔트리 내의 명령이 실행된다. 이 명령은 패킷 처리 명령 Action 및 파이프라인 제어 명령 Goto-Table와 같은 복수 유형을 포함하며, 일부의 명령은 파라미터를 포함한다. 예를 들어, 명령이 "Goto-Table Table2"인 것으로 가정하고, 여기서 "Goto-Table"은 명령 유형이고, "Table2"은 파라미터이며, 명령의 의미는 흐름표 ID가 Table2인 흐름표로 건너뛰어 계속해서 매칭을 수행하고 그 패킷을 처리하라는 의미이다.
매칭이 성공적으로 수행되는 흐름 엔트리 내의 명령이 다른 흐름표로 건너뛰라는 명령이면, 다른 흐름표로 건너뛰어 계속해서 매칭을 수행하고 그 패킷을 수행한다. 즉, 매칭은 패킷과 복수의 흐름표 사이에서 수행될 수 있다. Action 역시 Output Port1과 같은 복수 유형을 포함하며, 여기서 Output은 패킷 송신을 나타내는 Action 유형이고, Port1은 포트 1을 나타내는 파라미터이며, 전체 Action은 패킷이 포트 1로부터 송신된다는 것을 나타낸다.
도 2를 참조하면, 교환기 S가 호스트 PC1에 의해 송신된 패킷 Packet을 진입 포트 P1로부터 수신하는 것으로 가정한다. 패킷 Packet과 교환기 S 내의 흐름표 Table0(매칭되어야 하는 제1 흐름표), Table1, ..., 및 TableN 사이에서 매칭이 순차적으로 수행된다. 패킷 Packet을 수신한 후, 교환기는 패킷 Packet 및 진입 포트(ingress port)의 IDP1을 Table0에 송신하여 파이프라인형 매칭을 수행한다. Table0은 매칭 및 처리를 완료한 후, 다음의 정보: 진입 포트의 IDP1, 처리된 패킷 Packet+ 및 패킷 Packet+와 관련된 메타데이터(metadata)가 획득되고, Goto-Table에 따라 다음 흐름표로 건너뛰어 매칭 및 처리를 수행하거나, 패킷이 Action 명령에 따라 폐기되거나, 패킷이 Action 명령에 따라 포트로부터 송신되거나, 패킷이 Action 명령에 따라 제어기로 송신되어 처리된다. 메타데이터는 Table0이 패킷 Packet을 처리한 후에 생성된 동적 정보이고, 이 동적 정보는 패킷 Packet+ 매칭이 나중에 수행되어야 하는 흐름표에서 사용되어야 한다. 예를 들어, Packet이 Table0에 의해 처리된 후, 이 Packet으로부터 GRE 헤더가 제거되며, 그런 다음 이 GRE 헤더는 메타데이터에 기록될 수 있다. 정보는 Table1로 가정한 다음 흐름표로 전달되어 매칭을 수행한다. Table0의 프로세싱 처리와 마찬가지로, Table0과 TableN 간의 모든 흐름표에 대해 매칭이 완료된 후, 정보가 또한 획득된다. 이 정보가 TableN에 전달된 후, TableN은 최종적으로 처리된 패킷을 획득한다. 흐름표 간에 전달된 정보는 전술한 열거된 정보에 제한되지 않으며, 예를 들어, 행동 집합(Action Set)이 흐름표 간에 추가로 전달될 수 있다. 행동 집합은 초기에는 (패킷이 Table0에 송신될 때는) 공집합(empty set)이고, 흐름표에 정의된 명령의 처리 조작을 저장하는 데 사용되며, 이러한 명령은 다른 흐름표에 전달될 수 있으며, 파이프라인이 종료되는 흐름표에서 최종적으로 실행된다.
실시예 1
본 발명의 실시예는 교환 장치 구성 방법을 제공하며, 이 방법은 전술한 애플리케이션 시나리오에 적용 가능하다. 도 3을 참조하면, 방법의 프로세스는 이하를 포함한다:
단계 301: 제어기는 제1 흐름 엔트리 설치 메시지를 송신하며, 여기서 제1 흐름 엔트리 설치 메시지는 흐름표 ID 및 제1 흐름표를 포함하고, 제1 흐름 엔트리 설치 메시지는 흐름표 ID에 따라 흐름표에 제1 흐름 엔트리를 설정하도록 교환 장치에 명령하는 데 사용된다.
제1 흐름 엔트리는 매칭 필드를 포함한다. 매칭 필드는 매칭되어야 하는 정보를 지정하고 수신된 패킷의 매칭되어야 하는 정보와 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용된다.
매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 ID, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함하되 이에 제한되지 않는다. 매칭되어야 하는 정보는 OpenFlow 프로토콜에 현재 정의된 내용이고, 장래에, OpenFlow 프로토콜은 매칭되어야 하는 하나 이상의 정보를 정의할 수 있다.
데이터베이스 내의 각각의 레코드는 제1 필드를 포함하고, 제1 필드는 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용된다.
구체적으로, 데이터베이스는 교환 장치에 사전설정될 수 있다. 또한, 교환 장치는 수동으로 입력된 구성 커맨드에 따라 데이터베이스를 생성할 수 있거나, 교환 장치는 제어기의 명령하에서 데이터를 생성한다.
단계 302: 교환 장치는 제1 흐름 엔트리 설치 메시지에 따라 적어도 하나의 흐름표 내의 제1 흐름 엔트리를 설정한다.
구체적으로, 교환 장치는 제1 흐름 엔트리 설치 메시지 내에 있는 흐름표 ID에 대응하는 흐름표에 제1 흐름 엔트리를 설정한다.
본 발명의 이 실시예에서, 흐름표 내의 제1 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보의 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용함으로써 저장되며, 데이터베이스는 많은 레코드를 포함하고, 하나의 레코드 역시 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보의 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보의 모든 값이 다르고, 명령이 같은 흐름 엔트리는 하나의 흐름 엔트리로 간략화될 수 있고, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리 내에 존재하는 과잉 정보가 제거되고, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보의 값이 데이터베이스에 존재하지 않을 때, 추가의 조작이 1회만 수행되어 매칭되어야 하는 정보의 값이 데이터베이스에 부가되어야 하며, 추가의 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험이 회피된다.
실시예 2
본 발명의 실시예는 교환 장치 구성 방법을 제공하며, 이 방법은 전술한 애플리케이션 시나리오에 적용 가능하다. 도 4를 참조하면, 방법의 프로세스는 이하를 포함한다:
단계 401: 제어기는 교환 장치에 데이터베이스 생성 명령을 송신하며, 여기서 데이터베이스 생성 명령은 데이터베이스를 생성하도록 교환 장치에 명령하는 데 사용된다.
구체적으로, 제어기는 도 1에 도시된 제어기 C를 포함하되 이에 제한되지 않으며, 교환 장치는 도 1에서의 교환 장치 S를 포함하되 이에 제한되지 않으며, 하나 이상의 흐름표가 교환기 S에 설정되어 있다.
구체적으로, 제어기는 OpenFlow 메시지를 사용하여 교환 장치에 데이터베이스 생성 명령을 송신할 수 있다. 데이터베이스 생성 명령은 데이터베이스 ID 및 데이터베이스 필드 정보를 포함하며, 여기서 데이터베이스 필드 정보는 필드명을 포함한다. 데이터베이스 필드 정보는 데이터 유형, 길이, 및 필드의 디폴트 값, 그리고 필드가 데이터베이스의 키워드인지를 더 포함할 수 있다.
예를 들어, OpenFlow 메시지에 반송된 데이터베이스 생성 명령은 "Create DataBase: DataBase ID=0, Fields (MAC, Port-ID)"인 것으로 가정한다. 데이터베이스 생성 명령에서, 데이터베이스 ID는 0이고, 데이터베이스 내의 레코드는 2개의 필드: 미디어 액세스 제어(Media Access Control, MAC로 약칭) 어드레스 필드 및 Port-ID (포트 ID)필드를 포함한다. 또한, 각각의 필드의 데이터 유형 및 길이는 지정될 수 있는데, 예를 들어, MAC 어드레스 필드는 길이가 6인 캐릭터 어레이이고, Port-ID 필드는 32비트 무부호 정수(unsigned integer)인 것으로 지정될 수 있다. 필드가 데이터베이스의 프라이머리 키워드(primary keyword)인지가 추가로 지정될 수 있는데, 예를 들어 본 실시예에서, 제어기는 MAC 어드레스 필드를 프라이머리 키워드로 지정할 수 있고, 이 방법에서, 데이터베이스의 레코드는 MAC 어드레스를 사용하여 고유하게 결정될 수 있다.
또한, 데이터베이스 생성 명령은 데이터베이스 속성 정보 및 통계 정보 중 적어도 하나를 더 포함할 수 있다. 데이터 속성 정보는 데이터베이스 내의 레코드의 최대 수, 레코드의 일시중지, 및 교환 장치가 데이터베이스 내의 레코드를 변경하는 것을 허용할지를 포함한다. 통계 정보는 데이터베이스 내의 레코드의 총수, 데이터베이스와 패킷 간의 매칭의 총수, 매칭 성공 횟수의 총수, 및 각각의 레코드의 매칭 성공 횟수의 총수를 포함한다.
단계 402: 교환 장치는 제어기에 의해 송신된 데이터베이스 생성 정보를 수신하며, 데이터베이스 생성 정보에 따라 데이터베이스를 구축한다.
교환 장치는 조작자에 의해 전달된 구성 커맨드를 추가로 수신하고 구성 커맨드에 따라 데이터베이스를 생성할 수 있다는 것에 주목하라.
단계 403: 제어기는 교환 장치에 데이터베이스 갱신 명령을 송신하며, 데이터베이스 갱신 정보는 데이터베이스 삭제 명령 및 레코드 갱신 명령을 포함하며, 레코드 갱신 명령은 데이터베이스에 레코드를 부가하기, 데이터베이스로부터 레코드를 삭제하기, 및 데이터베이스 내의 레코드를 수정하기를 포함한다.
제어기는 서비스 필요에 따라 그리고 언제든지 교환 장치를 제어하여 데이터베이스를 변경할 수 있다. 구체적으로, 제어기는 OpenFlow 메시지를 사용하여 교환 장치에 데이터베이스 갱신 명령을 송신할 수 있다. 예를 들어, 레코드 갱신 명령이 Add Record: DataBase ID=0, Fields (MAC=MAC1, Port-ID=1)인 것으로 가정한다. 레코드 갱신 정보는 이러한 레코드를 데이터베이스 0에 부가하도록 교환 장치에 다음과 같이 명령하는 데 사용된다: MAC 필드 값은 MAC1이고, Port-ID 필드 값은 1이다.
교환 장치에 의해 생성된 데이터베이스는 표 2에 도시된 데이터베이스이고, 데이터베이스의 ID는 0이고, 데이터베이스는 2개의 레코드를 포함하며, 각각의 레코드는 MAC 필드 및 Port-ID 필드를 포함하는 것으로 가정한다.
DataBase 0
MAC Port-ID
MAC1 1
MAC2 2
교환 장치는 교환 장치의 저장 공간에 데이터베이스를 구축할 수도 있고 교환 장치 외부의 물리적 장치에 데이터베이스를 구축할 수도 있다.
단계 404: 교환 장치는 데이터베이스 갱신 명령에 따라 데이터베이스를 갱신한다.
구체적으로, 단계 404는: 교환 장치가 데이터베이스 삭제 명령에 따라 지정된 데이터베이스를 삭제하는 단계, 및 레코드 갱신 명령에 따라 데이터베이스 내의 레코드를 갱신하는 단계를 포함한다.
교환 장치가 데이터베이스 갱신 명령에 따라 데이터베이스를 갱신하기 전에, 방법은: 교환 장치가 갱신될 데이터베이스가 존재하는지, 그리고 갱신될 레코드가 존재하는지를 질의하는 단계를 포함한다. 갱신될 데이터베이스도 갱신될 레코드도 존재하지 않으면, 교환 장치는 데이터베이스도 갱신될 레코드도 존재하지 않는다는 것을 나타내는 메시지를 제어기에 보고한다.
단계 405: 제어기는 제1 흐름 엔트리 설치 메시지를 송신하며, 여기서 상기 제1 흐름 엔트리 설치 메시지는 흐름표 ID 및 제1 흐름 엔트리를 포함하며, 상기 제1 흐름 엔트리 설치 메시지는 상기 흐름표 ID에 대응하는 흐름표에 제1 흐름 엔트리를 설정하도록 교환 장치에 명령하는 데 사용된다.
상기 제1 흐름 엔트리는 매칭 필드를 포함한다. 상기 매칭 필드는 매칭되어야 하는 정보를 지정하고, 수신된 패킷의 매칭되어야 하는 정보와 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용되어, 패킷과 매칭하는 제1 레코드를 획득한다. 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 ID, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함한다.
제1 필드는 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용되고, 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용된다. 구체적으로, 데이터베이스 내의 각각의 레코드의 각각의 필드는 제1 필드 또는 제2 필드로서 사용될 수 있으며, 이것들은 흐름표 내의 상이한 흐름 엔트리의 매칭 필드 및 패킷 처리 명령에 따라 좌우된다. 예를 들어, 표 2에서의 MAC 어드레스 필드가 제1 필드로서 사용될 수 있고, Port-ID 필드가 제1 필드로서 사용될 수 있으며, 제2 필드로서 추가로 사용될 수 있다.
또한, 매칭 필드는 데이터베이스의 ID를 지정하고, 수신된 패킷의 매칭되어야 하는 정보의 값과 식별자가 상기 데이터베이스의 ID인 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용될 수 있다.
예를 들어, 제1 흐름 엔트리 설치 메시지에 반송된 흐름표 ID는 "Table ID=0"이고, 제1 흐름 엔트리는 "Match ((SRC MAC=MAC, In Port=Port-ID), DataBase ID=0), Instructions (Goto-Table Table1)"인 것으로 가정한다. "Match ((SRC MAC=MAC, In Port=Port-ID)"는 매칭 필드이고, 이 매칭 필드에 의해 지정되고 매칭되어야 하는 정보는 SRC MAC (원시 MAC 어드레스) 및 In Port (패킷이 수신되는 포트)이며, 매칭 필드에 의해 지정된 데이터베이스 ID는 0이다. 매칭 필드는 수신된 패킷의 SRC MAC와 데이터베이스 내의 MAC 필드의 MAC 값 사이 그리고 수신된 패킷의 In Port와 Port-ID 필드의 Port 값 사이의 매칭을 개별적으로 수행하도록 교환 장치에 명령하는 데 사용된다. 매칭 필드의 지시에 따라, 데이터베이스 내의 MAC 필드와 Port-ID 필드 모두는 제1 필드로서 사용된다.
본 발명의 이 실시예의 실시 방식에서, 제1 흐름 엔트리는 패킷 처리 명령을 더 포함하며, 패킷 처리 명령은: 패킷과 매칭하는 제1 레코드가 획득된 후, 제1 레코드 내의 제2 필드를 파라미터로서 사용하여 패킷 처리 명령에 따라 패킷을 처리하도록 교환 장치에 명령하는 데 사용된다.
제1 엔트리의 명령은 전술한 명령의 유형이 흐름표를 건너뛰는 것을 수행하기 위한 GoT0-Table 명령이다는 것 외에, 많은 유형을 포함하는데, 패킷에 대한 조작을 수행하는 방법을 교환기에 명령하는 행동(Action)인 명령, 예를 들어, 패킷을 포워딩하고, 폐기하고, 헤더를 수정하고, 캡슐화하고, 디캡슐화하며 제어기에 송신하는 다른 유형의 명령이 있다. 본 발명의 이 실시예에서, 이러한 유형의 명령을 패킷 처리 명령이라 한다.
예를 들어, 제1 흐름 엔트리 설치 메시지에 반송되는 흐름표 ID는 "Table ID=1"이고, 제1 흐름표는 "Match ((DST MAC=MAC), DataBase ID=0), Instructions Apply-Actions (Output (MatchRecord. Port-ID)))"인 것으로 가정한다. "Instructions Apply-Actions (Output (MatchRecord. Port-ID)"는 패킷 처리 명령이고, 패킷과 매칭하는 제1 레코드(데이터베이스에 있으면서 MAC 필드를 포함하는 레코드, 여기서 레코드의 MAC 필드의 값은 패킷 내의 DST MAC의 값과 같다)가 획득된 후, 이 패킷을 제1 레코드 내의 Port-ID 필드의 값에 의해 지시되는 Port에 포워딩하도록 교환 장치에 명령하는 데 사용된다. 데이터베이스 내의 레코드의 Port-ID 필드는 제2 필드로서 사용된다.
데이터베이스는 수 개의 레코드를 포함하고, 각각의 레코드는 제1 필드를 포함하며, 그러므로 패킷과 매칭하는 복수의 제1 레코드가 존재하는 상황이 일어날 수 있다. 이러한 상황에서는, 상이한 매칭 필드 및 패킷을 지시하는 패킷 처리 명령을 설치하는 처리 방식이 사용될 수 있다. 이 실시예는 2가지 유형의 상이한 매칭 필드 및 패킷 처리 명령을 제공한다.
제1 유형: 매칭 필드는 수신된 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용되어, 복수의 제1 레코드 중 최초의 제1 레코드를 획득하며, 패킷 처리 명령은: 제1 레코드 중 최초의 제1 레코드의 제2 필드를 파라미터로서 사용하여 패킷 처리 명령에 따라 패킷을 처리하도록 교환 장치에 명령하는 데 사용된다.
예를 들어, 제1 흐름 엔트리 설치 메시지에 반송되는 흐름표 ID가 "Table ID=Y"이고, 제1 흐름 엔트리는 "MatchFirst ((SRC IP=Field2), DataBase ID=X), Instructions Apply-Actions (Set-Field (SRC MAC, MatchRecord. Field1)), Goto-Table TableM)"인 것으로 가정한다. 제1 흐름 엔트리의 매칭 필드는 패킷 내의 SRC IP와 데이터베이스 내의 레코드의 필드 Field2 간의 매칭을 수행하도록 명령하는 데 사용되고, 패킷 처리 명령은 상기 패킷의 SRC MAC를 제1 레코드의 필드(Field)1의 값에 설정하고, 그런 다음 처리를 위해 흐름표 M으로 건너뛰도록 명령하는 데 사용된다.
제2 유형: 매칭 필드는 수신된 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용되어, 패킷과 매칭하는 복수의 제1 레코드를 획득하며, 패킷 처리 명령은: 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용하여 패킷 처리 명령에 따라, 교환 장치에 의해 복제되는 복수의 패킷을 처리하도록 교환 장치에 명령하는 데 사용된다.
예를 들어, 제1 흐름 엔트리 설치 메시지에 반송되는 흐름표 ID가 "Table ID=Z"이고, 제1 흐름 엔트리는 "MatchAll ((DST IP=Field3) DataBase ID=X), Instructions Apply-Actions (Set-Field (SRC MAC, MatchRecord. Field1)), Goto-Table TableN)"인 것으로 가정한다. 제1 흐름 엔트리의 매칭 필드는 패킷 내의 DST IP와 데이터베이스 내의 레코드의 필드 Field3 간의 매칭을 수행하도록 명령하는 데 사용되어, 모든 매칭하는 제1 레코드를 획득한다(2개의 제1 레코드가 존재하는 것으로 가정한다). 교화 장치는 패킷을 2개의 카피로 복제한다. 패킷 처리 명령은 이 2개의 패킷의 SRC MAC를 이러한 2개의 레코드의 Field1의 값에 개별적으로 설정하고, 그런 다음 처리를 위해 흐름표 N으로 건너뛰도록 명령하는 데 사용된다.
본 발명의 이 실시예의 다른 실시 방식에서, 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며, 레코드 처리 명령은: 패킷과 매칭하는 제1 레코드가 획득된 후, 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하도록 교환 장치에 명령하는 데 사용된다.
또한, 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함할 수 있으며, 상기 제1 수정 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 상기 제1 지정된 데이터베이스에 기록하도록 상기 교환 장치에 명령하는 데 사용되고, 상기 제2 수정 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정값으로 수정하도록 교환 장치에 명령하는 데 사용되고, 상기 부가 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용되며, 그리고 상기 삭제 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하도록 교환 장치에 명령하는 데 사용된다.
구체적으로, 제1, 제2, 제3, 및 제4 지정된 데이터베이스는 레코드 처리 명령에 지정된 데이터베이스 ID에 대응하는 데이터베이스이다. 제1, 제2, 제3, 및 제4 지정된 데이터베이스는 동일한 데이터베이스일 수도 있고 상이한 데이터베이스일 수도 있다. 또한, 데이터베이스 ID가 레코드 처리 명령에 지정되지 않을 때, 데이터베이스는 디폴트에 의해 현재의 데이터베이스이며, 그런 다음 레코드 처리 명령은: 패킷과 매칭하는 제1 레코드 매칭이 획득된 후, 제1 레코드에 대해 조작을 수행하도록 교환 장치에 명령하는 데 사용된다. 예를 들어, 레코드 처리 명령은 "UpdateDatabase (MatchRecord.Sequence-Number=(MatchRecord.Sequence-Number+1)mod(2**32)), Goto-Table Table2)"이다. 레코드 처리 명령은 제1 레코드 내의 필드 순번의 값에 1을 더한 값에 대해 232의 모듈로 연산(modulo operation)을 수행하도록 명령하고, 그런 다음 데이터베이스에 대한 모듈로 연산 결과를 갱신하며, 그런 다음 Table2로 건너뛰도록 명령하는 데 사용된다.
단계 406: 교환 장치는 제1 흐름 엔트리 설치 메시지에 따라 적어도 하나의 흐름표에 제1 흐름 엔트리를 설정한다.
예를 들어, 교환 장치는 단계 405에서 제어기에 의해 송신된 제1 흐름 엔트리 설치 메시지에 따라 Table3 및 Table4에 나타나 있는 제1 흐름 엔트리를 Table0 및 Table1에 개별적으로 구축하는 것으로 가정한다.
Table 0
매칭 필드 Goto-Table 명령
원시 MAC=DataBase 0인 MAC 필드,
진입 포트=DataBase 0인 Port-ID 필드
Goto-Table Table 1
Table 1
매칭 필드 패킷 처리 명령
목적 MAC=DataBase 0인 MAC 필드 출력(레코드의 Port-ID 필드와 매칭)
교환 장치가 흐름표에 제1 흐름 엔트리를 설정하기 전에, 방법은: 교환 장치가 데이터베이스가 존재하는지를 질의하는 단계; 상기 데이터베이스가 존재할 때, 상기 흐름표에 제1 흐름 엔트리를 설정하는 단계; 및 상기 데이터베이스가 존재하지 않을 때, 상기 교환 장치가 상기 데이터베이스가 존재하지 않는다는 것을 나타내는 메시지를 제어기에 보고하는 단계를 포함한다.
단계 407: 제어기는 제2 흐름 엔트리 설치 메시지를 송신하고, 여기서 상기 제2 흐름 엔트리 설치 메시지는 흐름표 ID 및 제2 흐름 엔트리를 포함하며, 제2 흐름 엔트리의 우선순위는 제1 흐름 엔트리의 우선순위보다 낮으며, 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭한다.
제2 흐름 엔트리는 레코드 부가 명령을 포함하고, 여기서 상기 레코드 부가 명령은 상기 제2 흐름 엔트리와 매칭하는 패킷에 따라 레코드를 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용된다.
구체적으로, 흐름표 내의 각각의 흐름 엔트리는 우선순위를 포함하고, 이 우선순위는 패킷과 각각의 흐름 엔트리 간의 매칭의 순서를 지시하는 데 사용된다.
제2 흐름 엔트리는 "Table-Miss, Instructions (Apply-Actions (UpdateDatabase (DataBase ID=0, Find: SRC MAC=MAC, UpdateContent (SRC MAC=MAC, Port-ID=In Port))), Goto-Table Table1)"이고, 여기서 "Table-Miss"는 매칭하는 내용이 존재하지 않는다는 것, 즉 모든 패킷이 보편적으로 매칭된다는 것을 말한다. "UpdateDatabase (DataBase ID=0, Find: SRC MAC=MAC, UpdateContent (SRC MAC=MAC, In Port=Port-ID))"란, 데이터베이스 ID가 0인 데이터베이스에서, MAC 어드레스가 패킷의 원시 MAC 어드레스인 레코드가 검색되고, 레코드가 발견되지 않으면, 패킷의 원시 MAC 어드레스 및 진입 포트 P1이 데이터베이스에 부가되고, 레코드가 발견되면, 패킷의 원시 MAC 어드레스도 진입 포트 P1도 부가되지 않으며, 포트의 ID는 In Port에 직접적으로 갱신된다는 것을 말한다.
단계 408: 교환 장치는 제2 흐름 엔트리 설치 메시지에 따라 적어도 하나의 흐름표에 제2 흐름 엔트리를 설정한다.
예를 들어, 교환 장치는 단계 407에서 제어기에 의해 송신된 제2 흐름 엔트리 설치 메시지에 따라 Table5에 나타나 있는 제2 흐름 엔트리를 Table0에 구축하고, 제2 흐름 엔트리는 낮은 우선순위를 가지며, Table0 내의 제1 흐름 엔트리는 높은 우선순위를 가지는 것으로 가정한다.
Table 0
우선순위 매칭 필드 명령
높은 우선순위 원시 MAC=DataBase 0인 MAC 필드,
진입 포트=DataBase 0인 Port-ID 필드
Goto-Table Table 1
낮은 우선순위 Table-Miss UpdateDatabase:
SRC MAC=MAC,
In Port=Port-ID,
Goto-Table Table 1
단계 409: 제어기는 교환 장치에 질의 메시지를 송신하며, 여기서 질의 메시지는 데이터베이스의 속성 정보, 데이터베이스 내의 레코드의 내용, 및 데이터베이스의 통계 정보 중 하나 이상에 대해 질의하는 데 사용된다.
단계 410: 교환 장치는 제어기에 의해 송신된 질의 메시지를 수신하고, 여기서 질의 메시지는 데이터베이스의 속성 정보, 데이터베이스 내의 레코드의 내용, 및 데이터베이스의 통계 정보 중 하나 이상에 대해 질의하는 데 사용되고, 제어기에 응답 메시지를 송신하며, 상기 응답 메시지는 상기 질의 메시지에 대응한다.
구체적으로, 응답 메시지가 질의 메시지에 대응한다는 것은: 질의 메시지에 의해 지시되는 내용에 따라 제어기가 질의해야 하는 것을 알아낸 매칭 내용을 포함한다. 질의 메시지 및 응답 메시지는 OpenFlow 멧ㅎ지의 형태로 될 수 있다.
이 실시예는 단계 403, 4056, 407, 및 409의 단계 간 실행 순서에 제한을 두지 않는다는 것에 유의해야 한다.
본 발명의 실시예에서, 흐름표 내의 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용하여 저장되고, 데이터베이스는 많은 레코드를 포함하며, 레코드도 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 모든 값은 다르며, 명령이 같은 흐름 엔트리가 하나의 흐름 엔트리로 간략화될 수 있으며, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리에 존재하는 과잉 정보를 제거하며, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 값이 데이터베이스에 존재하지 않을 때, 부가의 조작을 1회만 실시하여 매칭되어야 하는 정보의 값을 데이터베이스에 부가하고, 부가적인 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험을 회피한다.
실시예 3
본 발명의 이 실시예는 패킷 처리 방법을 제공하며, 이 방법은 전술한 애플리케이션 시나리오에 적용 가능하고, 도 1에 도시된 교환기 S에 의해 실행될 수 있다. 교환기 S에는 하나 이상의 흐름표가 설정된다. 도 5를 참조하면, 방법의 프로세스는 이하를 포함한다:
단계 501: 패킷을 수신한다.
또한, 패킷을 수신할 때, 교환 장치는 패킷이 수신되는 진입 포트의 ID 및 패킷과 관련된 메타데이터를 획득한다.
단계 502: 패킷이 매칭되어야 하는 흐름표 내의 제1 흐름 엔트리의 매칭 필드에 따라, 패킷의 매칭되어야 하는 정보의 값을 획득한다.
제1 흐름 엔트리는 매칭 필드 및 패킷 처리 명령을 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하는 데 사용된다. 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 ID, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함한다.
단계 503: 매칭 필드의 명령하에서, 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행한다.
패킷과 매칭하는 제1 레코드가 획득되면, 단계 504가 수행된다. 패킷과 매칭하는 제1 레코드가 획득되지 않으면, 패킷은 제어기 송신될 수 있거나, 패킷에 대해 폐기 처리가 수행될 수 있다.
제1 필드는 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용된다.
단계 504: 상기 패킷 처리 명령에 따라 패킷을 처리한다.
본 발명의 이 실시예에서, 흐름표 내의 제1 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보의 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용함으로써 저장되며, 데이터베이스는 많은 레코드를 포함하고, 하나의 레코드 역시 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보의 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보의 모든 값이 다르고, 명령이 같은 흐름 엔트리는 하나의 흐름 엔트리로 간략화될 수 있고, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리 내에 존재하는 과잉 정보가 제거되고, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보의 값이 데이터베이스에 존재하지 않을 때, 추가의 조작이 1회만 수행되어 매칭되어야 하는 정보의 값이 데이터베이스에 부가되어야 하며, 추가의 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험이 회피된다.
실시예 4
본 발명의 이 실시예는 패킷 처리 방법을 제공하며, 이 실시예에서는, 도 1에 도시된 교환기 S에 2개의 흐름표가 유지되는데, 하나는 수신된 이더넷 패킷을 처리하는 데 사용되고, MAC 어드레스 학습 기능을 주로 완료하며, 이하에서는 학습 표라 하며(학습 표의 ID는 Table0이고, 학습 표는 제1 흐름표인 것으로 가정한다), 다른 하나는 이더넷 패킷의 외부 송신을 처리하는 데 사용되고, 이더넷 패킷 포워딩 기능을 주로 완료하며, 이하에서는 포워딩 표라 한다(포워딩 표의 ID는 Table1인 것으로 가정한다). 학습 표는 패킷을 처리하는 단계를 완료한 후, 명령을 사용하여 포워딩 표로 건너뛰어 송신 프로세싱을 수행한다. 도 1에 도시된 호스트 PC1 및 PC2는 S의 포트 P1 및 포트 P2에 연결되고, S는 제어기 C에 연결된다. P1의 IP는 IP1이고, P1의 MAC 어드레스는 MAC1이다. P2의 IP는 IP2이고, P2의 MAC 어드레스는 MAC2이다. PC1은 PC2와 먼저 통신하는 경향이 있다(PC1은 PC의 IP 어드레스를 알고 있고, 반면 PC1 및 PC2는 서로의 MAC 어드레스를 알지 못한다). 먼저, PC1은 어드레스 해석 프로토콜(Address Resolution Protocol, ARP로 약칭) 요구 패킷을 S에 송신하여, IP2에 대응하는 MCA 어드레스를 해석할 것을 요구한다(브로드캐스트는 모든 호스트에 대해 이루어지며, 브로드캐스트를 수신한 후, IP 어드레스가 IP2인 호스트는 MAC 어드레스를 PC1에 통지한다). ARP 요구 패킷은 PC1의 MAC 어드레스, 목적 MCA 어드레스(브로드캐스트 MAC 어드레스, 즉 FFFFFFFFFFFF), 및 MAC 어드레스를 해석할 것을 요구하는 IP 어드레스 IP2를 포함한다.
도 6을 참조하면, 방법의 프로세스를 다음을 포함한다:
단계 601: 제어기는 매칭이 실패인 패킷을 제어기에 송신하도록 교환기에 명령하고, 데이터베이스를 구축하도록 교환기에 명령한다.
첫째, 제어기는 Table0 및 Table1에 Table-Miss 흐름 엔트리를 개별적으로 설치하도록 교환기에 명령한다. Table-Miss 흐름 엔트리는 Table0 또는 Table1과 매칭하는 것이 실패인 패킷을 제어기에 송신하도록 교환기에 명령한다. Table0 내의 Table-Miss 흐름 엔트리는 "Table ID=0, Table-Miss, Instructions (Apply-Actions (Output (CONTROLLER)))"이고, Table1 내의 Table-Miss 흐름 엔트리는 "Table ID=1, Table-Miss, Instructions (Apply-Actions (Output (CONTROLLER)))"인 것으로 가정한다.
Table-Miss 흐름 엔트리의 우선순위는 Table0 및 Table1 내의 다른 흐름 엔트리의 우선순위보다 낮으며, 이 방법에서, 패킷과 Table-Miss 흐름 엔트리 간의 매칭이 패킷과 다른 흐름 엔트리 간의 매칭이 실패인 후에만 수행된다는 것에 유의해야 한다.
둘째, 제어기는 Table1에 흐름 엔트리를 설치하도록 교환기에 명령하며, 흐름 엔트리는 목적 MAC 어드레스가 브로드캐스트 어드레스인 패킷을 ALL 포트(ALL 포트는 패킷이 수신되는 포트를 제외한 교환기 상의 모든 포트, 즉 브로드캐스트를 말한다)에 송신하도록 교환기에 명령한다. 흐름 엔트리는 "Table ID=1, Match (DST MAC=FFFFFFFFFFFF), Instructions (Apply-Actions (Output (ALL)))"인 것으로 가정한다.
그런 다음, 제어기는 OpenFlow 메시지를 사용하여 데이터베이스를 생성하도록 교환기에 명령한다. OpenFlow 메시지는 "Create DataBase: DataBase ID=0, Fields (MAC, Port-ID)"인 것으로 가정한다.
마지막으로, 제어기는 Table0에 제1 흐름 엔트리를 설치하도록 교환기에 명령하며, 여기서 제1 흐름 엔트리는 이더넷 패킷의 원시 MAC 어드레스와 지정된 데이터베이스 내의 각각의 레코드의 MAC 어드레스 사이 그리고 이더넷 패킷의 진입 포트의 ID와 지정된 데이터베이스 내의 각각의 레코드의 포트 ID 필드 사이의 매칭을 수행하도록 교환기에 명령하며, 매칭이 성공이면, Table1로 건너뛴다. 제1 흐름 엔트리는 "Table ID=0, Match ((SRC MAC=MAC, In Port=Port-ID), DataBase ID=0), Instructions (Goto-Table Table1)"인 것으로 가정한다.
단계 602: 호스트 PC1은 ARP 요구 패킷을 송신한다.
ARP 요구 패킷은 IP2에 대응하는 MAC 어드레스를 해석하도록 요구한다. 패킷의 원시 MCA 어드레스는 MAC1이고, 패킷의 목적 MCA 어드레스는 브로드캐스트 어드레스(즉, FFFFFFFFFFFF)이다.
단계 603: 교환기는 ARP 요구 패킷을 수신한다.
구체적으로, 교환기 S는 진입 포트 P1으로부터 ARP 요구 패킷을 수신한다.
단계 604: 교환기는 Table0 내의 제1 흐름 엔트리의 매칭 필드에 따라, 매칭되어야 하는 패킷에 관한 정보의 값을 획득한다. Table0은 ARP 요구 패킷이 매칭되어야 하는 흐름표이다.
제1 흐름 엔트리는 매칭 필드 및 패킷 처리 명령을 포함하며, 매칭 필드는 매칭되어야 하는 정보를 지정하는 데 사용되고, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 ID, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함한다.
또한, 매칭 필드는 데이터베이스의 ID를 지정하고, 수신된 패킷의 매칭되어야 하는 정보의 값과 ID가 상기 데이터베이스의 ID인 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환기에 명령하는 데 추가로 사용된다.
구체적으로, 이 실시예에서, ARP 요구 패킷이 매칭하여야 하는 제1 흐름표는 학습 표 Table0이다. 제1 흐름 엔트리는 단계 601에서 구축된 제1 흐름 엔트리이고, 제1 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보는 ARP 요구 패킷이 수신되는 진입 포트의 IDP1 및 ARP 요구 패킷의 원시 MAC 어드레스 MAC1(즉, 이더넷 프레임 헤더 내의 헤더 필드)이다는 것에 유의해야 한다.
단계 605: 교환기는 Table0 내의 제1 흐름 엔트리의 매칭 필드에 의해 지시되는 데이터베이스가 존재하는지를 판정하고, 데이터베이스가 존재하면, 단계 606을 수행하고, 데이터베이스가 존재하지 않으면, 현재의 프로세스를 중지한다.
구체적으로, 매칭 필드는 데이터베이스의 ID를 지정하는 데 추가로 사용된다. 교환기는 데이터베이스의 ID에 따라 모든 데이터베이스를 횡단하며, 데이터베이스가 발견되면, 데이터베이스가 존재하는 것으로 판정하고, 데이터베이스가 발견되지 않으면, 데이터베이스가 존재하지 않는 것으로 판정한다.
단계 606: 교환기는 Table0 내의 제1 흐름 엔트리의 매칭 필드의 명령하에서, ARP 요구 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행한다.
ARP 요구 패킷과 매칭하는 제1 레코드가 획득되면, 단계 611이 수행된다. ARP 요구 패킷과 매칭하는 제1 레코드가 획득되지 않으면, 단계 607이 수행된다.
구체적으로, 교환기 S가 PC1의 MAC 어드레스 및 Port-ID를 아직 학습하지 안 했으면(제어기는 호스트 PC1의 MAC 어드레스 및 Port-ID를 교환기 S에 통보하지 않는다), MAC1 및 P1은 학습 표 Table0 내의 제1 흐름 엔트리의 매칭 필드가 지시하는 데이터베이스 내의 각각의 레코드의 MAC 어드레스 및 Port-ID에 존재하지 않는다. 이 경우, 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭이 실패이고, 패킷과 매칭하는 제1 레코드가 획득되지 않는다. 그렇지 않으면, 교환기 S가 MAC1 및 P1을 학습하였다면, MAC1 및 P1은 데이터베이스에 존재하고, 패킷과 매칭하는 제1 레코드가 획득된다.
단계 607: 교환기는 교환기가 ARP 요구 패킷 및 ARP 요구 패킷을 수신하는 진입 포트의 ID를 제어기에 송신한다.
구체적으로, Table-Miss 흐름 엔트리는 교환기 내의 각각의 흐름표에 미리 설치되며, 즉 매칭이 실패이면, 패킷은 폐기되거나 처리를 제어기에 송신된다. 본 발명의 이 실시예에서, 패킷은 처리를 제어기에 송신된다.
교환기는 OpenFlow 메시지를 사용하여 ARP 요구 패킷 및 진입 포트의 ID를 제어기에 송신한다. 또한, 교환기는 ARP 요구 패킷을 추가로 버퍼링할 수 있으며, 버퍼 식별자를 제어기에 송신한다. 예를 들어, 교환기가 제어기에 송신한 OpenFlow 메시지는 Packet-In(ARP 요구 패킷, 여기서 In Port=1, 및 Buffer-ID=1)이다.
단계 608: 제어기는 데이터베이스에 제1 레코드를 부가하도록 교환기에 명령한다.
수신 후, 제어기는 (OpenFolw 메시지를 사용하여) 레코드 갱신 명령을 교환기에 송신하며, 여기서 레코드 갱신 명령은 MAC1 및 P1의 레코드를 데이터베이스에 부가하도록 교환기에 명령한다. 교환기가 ARP 요구 패킷을 버퍼링하면, 제어기는 레코드 갱신 명령에 버퍼 식별자를 추가로 반송할 수 있으며, 교환기는 ARP 요구 패킷을 버퍼링하지 않으면, 제어기는 ARP 요구 패킷을 교환기에 회신하여야 한다. 예를 들어, 레코드 갱신 명령은 Add Record: DataBase ID=0, Fields (MAC=MAC1, Port-ID=1), Buffer-ID=1이다.
단계 609: 교환기는 데이터베이스에 제1 레코드를 부가한다.
구체적으로, 제어기에 의해 송신된 레코드 부가 명령을 수신한 후, 교환기는 레코드 부가 명령에 따라 데이터베이스에 제1 레코드를 부가한다.
단계 610: 교환기는 Table0 내의 제1 흐름 엔트리의 매칭 필드의 명령하에서, ARP 요구 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행한다.
ARP 요구 패킷과 매칭하는 제1 레코드가 획득되면, 단계 611이 수행되고, ARP 요구 패킷과 매칭하는 제1 레코드가 획득되지 않으면, 단계 607이 수행된다.
본 발명의 이 실시예에서, 단계 609가 수행된 후, ARP 요구 패킷에 대한 매칭이 다시 수행될 수 있으며, 즉 교환기는 매칭 필드의 명령하에서, 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 다시 수행한다.
구체적으로, MAC 필드가 MAC1이고 포트 ID 필드가 1인 레코드가 데이터베이스에 존재하고, 따라서 Table0에 대한 매칭이 성공적으로 수행되어, ARP 요구 패킷과 매칭하는 제1 레코드를 획득한다.
단계 611: 교환기는 Table0 내의 제1 흐름 엔트리의 패킷 처리 명령에 따라 ARP 요구 패킷을 처리한다.
구체적으로, 학습 표 Table0 내의 흐름 엔트리의 명령은 "Instructions (Goto-Table Table1)"이며, 즉 전술한 건너뛰기 명령이다. 즉 MAC1 및 P1이 데이터베이스에 존재하면, 포워딩 표 Table1로 건너뛰어 패킷 정보를 계속 처리한다.
흐름 엔트리 "Match (DST MAC=FFFFFFFFFFFF), Instructions (Apply-Actions (ALL))"는 포워딩 표 Table1에 미리 설치되어 있으므로, 여기서 DST MAC란 목적 MAC 어드레스를 말하며, Apply-Actions (ALL)이란 모든 포트에 패킷을 송신하는 것을 말하며, 그리고 ARP 요구 패킷의 목적 MAC 어드레스는 FFFFFFFFFFFF이므로, Table1에 대한 매칭이 성공적으로 수행되고, (ARP 요구 패킷의 진입 포트 P1을 제외한) 모든 포트에 패킷을 송신하는 명령이 실행된다.
단계 612: 교환기는 제어기에 의해 송신된 데이터베이스 갱신 명령을 수신하고, 데이터베이스 갱신 명령에 따라 데이터베이스를 갱신한다.
데이터베이스 갱신 명령은 데이터베이스 삭제 명령 및 레코드 갱신 명령을 포함한다. 데이터베이스 갱신 명령에 따라 데이터베이스를 갱신하는 단계는: 데이터베이스 삭제 명령에 따라 지정된 데이터베이스를 삭제하는 단계, 및 레코드 갱신 명령에 따라 데이터베이스 내의 레코드를 갱신하는 단계를 포함한다.
레코드 갱신 명령은 데이터베이스에 레코드를 부가하기, 데이터베이스로부터 레코드를 삭제하기, 데이터베이스 내의 레코드를 수정하기를 포함한다.
제어기는 필요에 따라 그리고 언제든지 교환기를 제어하여 데이터베이스 및 레코드를 변경할 수 있다.
데이터베이스 갱신 명령에 따라 데이터베이스를 갱신하는 단계 이전에, 교환기는 갱신될 데이터베이스가 존재하는지, 그리고 갱신될 레코드가 존재하는지를 검출할 수 있다는 것에 유의해야 한다. 데이터베이스도 레코드도 존재하지 않으면, 교환기는 제어기에 보고할 수 있다.
본 발명의 이 실시예는 단계 612의 실행 순서에 제한을 두지 않으며, 단계 612는 이 실시예의 임의의 단계 전후에 수행될 수 있다는 것에 유의해야 한다.
본 발명의 실시예에서, 흐름표 내의 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용하여 저장되고, 데이터베이스는 많은 레코드를 포함하며, 레코드도 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 모든 값은 다르며, 명령이 같은 흐름 엔트리가 하나의 흐름 엔트리로 간략화될 수 있으며, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리에 존재하는 과잉 정보를 제거하며, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 값이 데이터베이스에 존재하지 않을 때, 부가의 조작을 1회만 실시하여 매칭되어야 하는 정보의 값을 데이터베이스에 부가하고, 부가적인 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험을 회피한다.
실시예 5
본 발명의 이 실시에는 패킷 처리 방법을 제공한다. 본 발명의 실시예 4에서, 교환기 S는 호스트 PC1에 의해 송신된 ARP 패킷을 (ARP 요구 패킷의 진입 포트 P1을 제외한) 모든 포트에 포워딩하는 단계를 완료한다. 본 발명의 이 실시예에서는, ARP 요구 패킷을 수신한 후, 호스트 PC2가 ARP 응답 패킷을 사용하여 교환기 S에 응답하는 것을 가정하고, 여기서 ARP 응답 패킷은 PC2의 MAC 어드레스 MA2 및 목적 MAC 어드레스 MAC1을 포함한다. 이러한 전제하에, 도 7을 참조하면, 본 발명의 이 실시예는 패킷 처리 방법을 제공하며, 방법의 프로세스는 다음을 포함한다:
단계 701: 제어기는 Table1 내의 제1 흐름 엔트리를 설치하고, Table0 내의 제2 흐름 엔트리를 설치하도록 교환기에 명령한다.
제1 흐름 엔트리는 "Table ID=1, Match ((DST MAC=MAC), DataBase ID=0), Instructions Apply-Actions (Output (MatchRecord. Port-ID)))"인 것으로 가정한다. 제1 흐름 엔트리의 매칭 필드는 패킷의 목적 MAC 어드레스와 데이터베이스 0 내의 레코드의 DST MAC 간의 매칭을 수행하도록 명령하는 데 사용되며, 매칭하는 제1 레코드가 데이터베이스 0에 존재하면, 패킷은 제1 레코드의 Port-ID 필드에 저장되어 있는 포트에 포워딩된다.
제2 흐름 엔트리는 "Table ID=0, Table-Miss, Instructions (Apply-Actions (UpdateDatabase(DataBase ID=0, Find: SRC MAC=MAC, UpdateContent(SRC MAC=MAC, In Port=Port-ID))), Goto-Table Table1)"인 것으로 가정하고, "Table-Miss"은 매칭하는 내용이 존재하지 않는다는 말하며, 즉, 모든 패킷이 보편적으로 매칭된다는 것을 말한다. "UpdateDatabase (DataBase ID=0, Find: SRC MAC=MAC, UpdateContent (SRC MAC=MAC, In Port=Port-ID))"는 데이터베이스 0에서, MAC 어드레스가 패킷의 원시 MAC 어드레스인 레코드가 MAC 필드에서 검색된다는 것을 말하며, 레코드가 발견되면, 데이터베이스 0에 패킷의 원시 MAC 어드레스 및 진입 포트 P1이 부가되며, 레코드가 발견되지 않으면, 패킷의 원시 MAC 어드레스도 진입 포트 P1도 부가되지 않으며, Port-ID가 In Port에 대해 직접적으로 갱신된다.
본 발명의 실시예 4에서의 단계 701 및 단계 601은 동시에 수행될 수 있다는 것에 유의해야 한다.
단계 702: 호스트 PC2는 ARP 응답 패킷을 송신한다.
구체적으로, APR 요구 패킷을 수신한 후, 호스트 PC2는 ARP 응답 패킷을 사용하여 PC1에 응답하며, 여기서 ARP 응답 패킷의 원시 MAC 어드레스는 MAC2이고, ARP 응답 패킷의 목적 MAC 어드레스는 MAC1이며, 교환기는 포트 P2로부터 ARP 응답 패킷을 수신한다.
단계 703: 교환기는 ARP 응답 패킷을 획득한다.
구체적으로, 진입 포트 P2로부터 ARP 응답 패킷을 수신한 후, 교환기 S는 매칭을 수행하기 위해 학습 표 Table0에 패킷을 송신한다.
단계 704: 교환기는 Table0 내의 제1 흐름 엔트리의 매칭 필드에 따라, 패킷의 매칭되어야 하는 정보의 값을 획득한다.
구체적으로, 이 실시예에서, 매칭하여야 하는 제1 흐름표는 학습 표 Table0이다. ARP 응답 패킷의 매칭되어야 하는 정보는 ARP 응답 패킷의 진입 포트의 ID P2 및 ARP 요구 패킷이 송신되는 원시 MAC 어드레스 MAC2이다.
구체적으로, 단계 704는 본 발명의 실시예 4에서의 단계 604와 같고, 이에 대한 설명은 여기서 생략한다.
단계 705: 교환기는 Table0 내의 제1 흐름 엔트리의 매칭 필드가 지시하는 데이터베이스가 존재하는지를 판정하고, 데이터베이스가 존재하면, 단계 706을 수행하고, 데이터베이스가 존재하지 않으면, 현재의 프로세스를 중지한다.
구체적으로, 단계 705는 본 발명의 실시예 4에서의 단계 605와 같고, 이에 대한 설명은 여기서 생략한다.
단계 706: 교환기는 Table0 내의 제1 흐름 엔트리의 매칭 필드의 명령하에서, ARP 응답 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행한다.
ARP 응답 패킷과 매칭하는 제1 레코드가 획득된 후, 단계 709가 수행된다. ARP 응답 패킷과 매칭하는 제1 레코드가 획득되면, 단계 707가 수행된다.
ARP 요구 패킷의 프로세스와 마찬가지로(본 발명의 실시예 4에서의 단계 606을 참조하면 된다), 교환기가 ARP 응답 패킷을 수신한 후, 학습 표 Table0 내의 제1 엔트리의 제1 지시 정보가 지시하는 데이터베이스 내의 ARP 응답 패킷의 원시 MAC 어드레스 MAC2에 대해 매칭을 수행한다. 교환기가 PC2의 MAC 어드레스를 학습하지 않았다면(제어기는 호스트 PC2의 MAC 어드레스에 대해 교환기 S에 통지하지 않는다), MAC2는 데이터베이스에 존재하지 않는다. 그렇지 않으면, 교환기 S가 MAC2를 학습하였다면, MAC2는 데이터베이스에 존재한다.
단계 707: 교환기는 APR 응답 패킷과 Table0 내의 제2 흐름 엔트리 간의 매칭을 수행하고 그 매칭을 성공적으로 수행하며, 제2 흐름 엔트리의 명령하에 제1 레코드를 데이터베이스에 부가한다.
구체적으로, 교환기 S는 MAC 어드레스가 MAC2이고 포트가 P2인 레코드를 데이터베이스가 0인 데이터베이스에 부가한다. MAC2는 P2에 대응한다.
단계 708: 교환기는 Table0 내의 제1 흐름 엔트리의 매칭 필드의 명령하에서, APR 응답 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 다시 수행한다.
APR 응답 패킷과 매칭하는 제1 레코드가 획득되면, 단계 709가 수행된다.
단계 709: 교환기는 Table0 내의 제1 흐름 엔트리의 패킷 처리 명령에 따라 APR 응답 패킷을 처리하고, Table1로 건너뛰며, 교환기는 Table1 내의 제1 흐름 엔트리의 매칭 필드의 명령하에서, APR 응답 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행한다. APR 응답 패킷과 매칭하는 제1 레코드가 획득되면, 교환기는 Table1 내의 제1 흐름 엔트리의 패킷 처리 명령에 따라 APR 응답 패킷를 처리한다.
구체적으로, 단계 701에서 설명한 바와 같이, Table1에 설치된 제1 흐름 엔트리는 "Table ID=1, Match ((DST MAC=MAC), DataBase ID=0), Instructions Apply-Actions (Output (MatchRecord. Port-ID)))"이다. 제1 흐름 엔트리의 매칭 필드는 패킷의 목적 MAC 어드레스와 데이터베이스 0 내의 레코드의 DST MAC 간의 매칭을 수행하도록 명령하는 데 사용되고, 제1 흐름 엔트리의 패킷 처리 명령은: 매칭하는 제1 레코드가 데이터베이스 0에 존재하면, 제1 레코드의 Port-ID 필드를 포트 파라미터로서 사용하여 ARP 응답 패킷을 포워딩하고 ARP 응답 패킷을 포트 파라미터에 의해 표시된 포트에 출력하도록 명령하는 데 사용된다.
호스트 PC1은 포트 PC1을 사용하여, 호스트 PC2에 의해 송신된 ARP 응답 패킷을 획득하고, ARP 응답 패킷을 해석함으로써 호스트 PC2의 MAC 어드레스를 알 수 있다. 이 방법에서, 호스트 PC1 및 호스트 PC2 모두는 서로의 MAC 어드레스를 알고 있고, 호스트 PC1 및 호스트 PC2는 서로에게 패킷을 전달할 수 있다. 또한, 도 6 및 도 7에 도시된 전체 프로세스를 사용함으로써, 교환기는 호스트 PC1 및 호스트 PC2의 IP 및 MAC 어드레스를 저장하고, 호스트 PC1 및 호스트 PC2가 서로에게 패킷을 전달할 때, 교환기는 이 둘의 패킷을 원활하게 포워딩할 수 있다.
단계 710: 교환기는 제어기에 의해 송신된 데이터베이스 갱신 명령을 수신하고, 여기서 데이터베이스 갱신 명령은 데이터베이스 삭제 명령 및 레코드 갱신 명령을 포함하며, 데이터베이스 삭제 명령에 따라 지정된 데이터베이스를 삭제하고, 레코드 갱신 명령에 따라 데이터베이스 내의 레코드를 갱신한다.
레코드 갱신 명령은 데이터베이스에 레코드를 부가하기, 데이터베이스로부터 레코드를 삭제하기, 및 데이터베이스 내의 레코드를 수정하기를 포함한다.
제어기는 서비스 필요에 따라 그리고 언제든지 교환기를 제어하여 데이터베이스 및 레코드를 변경할 수 있다.
데이터베이스 갱신 명령에 따라 데이터베이스를 갱신하는 단계 이전에, 교환기는 갱신될 데이터베이스가 존재하는지, 그리고 갱신될 레코드가 존재하는지를 검출할 수 있다는 것에 유의해야 한다. 데이터베이스도 레코드도 존재하지 않으면, 교환기는 제어기에 보고할 수 있다.
본 발명의 이 실시예는 단계 710의 실행 순서에 제한을 두지 않으며, 단계 710운 이 실시예의 임의의 단계 전후에 수행될 수 있다는 것에 유의해야 한다.
본 발명의 실시예에서, 흐름표 내의 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용하여 저장되고, 데이터베이스는 많은 레코드를 포함하며, 레코드도 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 모든 값은 다르며, 명령이 같은 흐름 엔트리가 하나의 흐름 엔트리로 간략화될 수 있으며, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리에 존재하는 과잉 정보를 제거하며, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 값이 데이터베이스에 존재하지 않을 때, 부가의 조작을 1회만 실시하여 매칭되어야 하는 정보의 값을 데이터베이스에 부가하고, 부가적인 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험을 회피한다.
실시예 6
본 발명의 실시예는 패킷 처리 방법을 제공하며, 이 실시예에서, 제어기는 데이터베이스 ID가 1인 데이터베이스를 생성하도록 교환기에 명령하는 것으로 가정한다. 데이터베이스 내의 각각의 레코드는 4개의 필드: GRE 터널 ID(Tunnel-ID), 외부 원시 IP 어드레스(Outer-SRC-IP), 외부 목적 IP 어드레스(Outer-DST-IP), 및 순번(Sequence-Number)을 포함한다. 외부 원시 IP 어드레스의 디폴트 값은 2.2.2.2이다. 순번의 디폴트 값은 0이다. 선택적으로, 제어기는 프라이머리 키워드가 GRE 터널 ID인 것으로 지정할 수 있다. 또한, 2개의 흐름표 Table2(제1 흐름표) 및 Table3이 교환기 내에서 유지된다. 제어기는 Table2에 제1 엔트리를 설치하도록 교환기에 명령하며, 목적 IP 어드레스가 1.1.1.1인 패킷의 GRE 터널 ID를 메타데이터에 기록하도록 교환기에 명령하고 Table3으로 건너뛴다.
도 8을 참조하면, 방법의 프로세스는 다음을 포함한다:
단계 801: 패킷을 획득한다.
구체적으로, 패킷을 수신한 후, 교환기는 매칭을 위해 Table2에 패킷을 송신한다.
구체적으로, Table2 내의 흐름 엔트리는 목적 IP 어드레스가 1.1.1.1인 패킷의 GRE 터널 ID를 메타데이터로 기록하고 Table3으로 건너뛰도록 명령하는 데 사용된다.
단계 802: Table3 내의 제1 흐름 엔트리의 매칭 필드가 지시하는 데이터베이스가 존재하는지를 판정하고, 데이터베이스가 존재하면, 단계 803을 수행하며, 데이터베이스가 존재하지 않으면, 중지한다.
예를 들어, 제1 흐름 엔트리는 Table3에 설정되어 있는 것으로 가정한다: "Match ((Tunnel-ID=MetaData.GRE-ID), DataBase ID=0), Instructions (Apply-Actions (Push-GRE-Header(MatchRecord.Sequence-Number), Push-IP-Header(MatchRecord.Outer-SRC-IP, MatchRecord.Outer-DST-IP)), UpdateDatabase(MatchRecord.Sequence-Number=(MatchRecord.Sequence-Number+1) mod(2**32))), Goto-Table TableM)".
구체적으로, Table3 내의 흐름 엔트리는 메타데이터 내의 GRE 터널 ID와 데이터베이스 ID가 1인 데이터베이스 내의 GRE 터널 ID 간의 매칭을 수행하도록 교환기에 명령하는 데 사용된다. 교환기는 데이터베이스 ID가 1인 데이터베이스가 존재하는 것으로 판정한다.
단계 803: Table3 내의 제1 흐름 엔트리의 매칭 필드의 명령하에서, 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행한다.
구체적으로, 데이터베이스가 존재하면, 데이터베이스 내의 GRE 터널 ID의 값이 메타데이터 내의 GRE 터널 ID와 동일한지를 질의 받는다. 데이터베이스 내의 GRE 터널 ID의 값이 메타데이터 내의 GRE 터널 ID와 동일하면, 패킷과 매칭하는 제1 레코드가 획득되고, 단계 805가 수행되고, 데이터베이스 내의 GRE 터널 ID의 값이 메타데이터 내의 GRE 터널 ID와 다르면, 단계 804가 수행된다.
단계 804: 데이터베이스에 레코드를 생성하고, 이에 따라 패킷과 Table3 내의 제1 흐름 엔트리 간의 매칭이 성공적으로 다시 수행될 수 있다.
구체적으로, Table3에 대한 매칭이 실패이면, 패킷은 제어기에 포워딩될 수 있다. 제어기는 데이터베이스 ID가 1인 데이터베이스에 레코드를 부가하도록 교환기에 명령한다: GRE 터널 ID는 1이고, 외부 원시 IP 어드레스는 3.3.3.3이며, 외부 목적 IP 어드레스는 4.4.4.4이다. 제어기는 순번을 지정하지 않았으므로, 새로 부가된 레코드의 순번 필드에 대해 디폴트 값이 사용되는데, 즉 0이 사용되고, 디폴트 값 대신 여기서 지정된 3.3.3.3을 외부 원시 IP 어드레스로서 사용한다.
단계 805: Table3 내의 흐름 엔트리의 패킷 처리 명령에 따라 패킷을 처리한다.
구체적으로, Table3에 대한 매칭이 성공적으로 수행되면, Table3 내의 제1 엔트리의 명령은 패킷에 GRE 헤더를 부가하고(GRE 헤더 내의 순번은 데이터베이스 내의 매칭하는 GRE 터널 ID에 대응하는 순번 필드의 값에 설정된다), IP 헤더를 부가하며(IP 헤더 내의 원시 IP 어드레스는 데이터베이스 내의 매칭하는 GRE 터널 ID에 대응하는 외부 원시 IP 어드레스에 설정되고, IP 헤더 내의 목적 IP 어드레스는 데이터베이스 내의 매칭하는 GRE 터널 ID에 대응하는 IP 어드레스에 설정된다), 순번에 1을 더한 값에 대해 232의 모듈로 연산을 수행하며, 그런 다음 모듈로 연산 결과를 데이터베이스에 갱신하며, 그런 다음 TableM(M은 자연수이다)으로 건너뛰도록 명령한다.
단계 806: 교환기는 제어기에 의해 송신된 데이터베이스 갱신 명령을 수신하며, 여기서 데이터베이스 갱신 명령은 데이터베이스 삭제 명령 및 레코드 갱신 명령을 포함하며, 데이터베이스 삭제 명령에 따라 지정된 데이터베이스를 삭제하고 레코드 갱신 명령에 따라 데이터베이스 내의 레코드를 갱신한다.
레코드 갱신 명령은 데이터베이스에 레코드를 부가하기, 데이터베이스로부터 레코드를 삭제하기, 및 데이터베이스 내의 레코드를 수정하기를 포함한다.
제어기는 서비스 필요에 따라 그리고 언제든지 교환기를 제어하여 데이터베이스 및 레코드를 변경할 수 있다.
본 발명의 이 실시예는 단계 806의 실행 순서에 제한을 두지 않으며, 단계 806의 이 실시예의 임의의 단계 전후에 수행될 수 있다는 것에 유의해야 한다.
본 발명의 실시예에서, 흐름표 내의 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용하여 저장되고, 데이터베이스는 많은 레코드를 포함하며, 레코드도 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 모든 값은 다르며, 명령이 같은 흐름 엔트리가 하나의 흐름 엔트리로 간략화될 수 있으며, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리에 존재하는 과잉 정보를 제거하며, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 값이 데이터베이스에 존재하지 않을 때, 부가의 조작을 1회만 실시하여 매칭되어야 하는 정보의 값을 데이터베이스에 부가하고, 부가적인 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험을 회피한다.
실시예 7
본 발명의 이 실시예는 교환 장치를 제공하며, 교환 장치는 하나 이상의 흐름표를 저장한다. 장치는:
적어도 하나의 흐름표에 제1 흐름 엔트리를 설정하도록 구성되어 있는 제1 설정 모듈
을 포함하며,
상기 제1 흐름 엔트리는 매칭 필드를 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하고, 수신된 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용된다.
상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 ID, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함한다. 상기 데이터베이스 내의 각각의 레코드는 제1 필드를 포함하고, 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용된다.
본 발명의 실시예에서, 흐름표 내의 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용하여 저장되고, 데이터베이스는 많은 레코드를 포함하며, 레코드도 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 모든 값은 다르며, 명령이 같은 흐름 엔트리가 하나의 흐름 엔트리로 간략화될 수 있으며, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리에 존재하는 과잉 정보를 제거하며, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 값이 데이터베이스에 존재하지 않을 때, 부가의 조작을 1회만 실시하여 매칭되어야 하는 정보의 값을 데이터베이스에 부가하고, 부가적인 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험을 회피한다.
실시예 8
본 발명의 이 실시예는 교환 장치를 제공하며, 교환 장치는 하나 이상의 흐름표를 저장한다. 장치는:
적어도 하나의 흐름표에 제1 흐름 엔트리를 설정하도록 구성되어 있는 제1 설정 모듈(901)
을 포함하며,
상기 제1 흐름 엔트리는 매칭 필드를 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하고, 수신된 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용된다.
상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 ID, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함한다. 상기 데이터베이스 내의 각각의 레코드는 제1 필드를 포함하고, 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용된다.
선택적으로, 상기 매칭 필드는 데이터베이스의 ID를 지정하고, 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 ID가 상기 데이터베이스의 ID인 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용된다.
선택적으로, 상기 데이터베이스의 각각의 레코드는 제2 필드를 더 포함하고, 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용된다.
상기 제1 흐름 엔트리는 패킷 처리 명령을 더 포함하며, 상기 패킷 처리 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 데이터베이스에 복수의 제1 레코드가 존재할 때,
상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드 중 최초의 제1 필드를 획득하며, 상기 패킷 처리 명령은: 상기 제1 레코드 내의 상기 최초의 제1 파라미터의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용되거나, 또는 상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드를 획득하며, 상기 패킷 처리 명령은: 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라, 상기 교환 장치에 의해 복제되는 복수의 패킷을 개별적으로 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며, 상기 레코드 처리 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며,
상기 제1 수정 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 상기 제1 지정된 데이터베이스에 기록하도록 상기 교환 장치에 명령하는 데 사용되고, 상기 제2 수정 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정값으로 수정하도록 교환 장치에 명령하는 데 사용되고, 상기 부가 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용되며, 그리고 상기 삭제 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 우선순위를 포함하며, 상기 우선순위는 상기 패킷과 각각의 제1 흐름 엔트리 간의 매칭의 순서를 지시하는 데 사용되며, 상기 교환 장치는:
상기 흐름표 중 적어도 하나에 제2 흐름 엔트리를 설정하도록 구성되어 있는 제2 설정 모듈(902)
을 더 포함하며,
상기 제2 흐름 엔트리의 우선순위는 상기 제1 흐름 엔트리의 우선순위보다 낮으며, 상기 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭하며, 상기 제2 흐름 엔트리는 레코드 부가 명령을 포함하고, 상기 레코드 부가 명령은 상기 제2 흐름 엔트리와 매칭하는 패킷에 따라 레코드를 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 교환 장치는:
조작자에 의해 전달된 구성 커맨드를 수신하고 상기 구성 커맨드에 따라 데이터베이스를 생성하거나; 또는 제어기에 의해 송신된 데이터베이스 생성 명령을 수신하고, 상기 데이터베이스 생성 명령에 따라 데이터베이스를 구축하도록 구성되어 있는 생성 모듈(903)
을 더 포함하며,
상기 데이터베이스 생성 명령은 데이터베이스 식별자 및 데이터베이스 필드 정보를 포함한다.
선택적으로, 상기 데이터베이스 생성 명령은 데이터베이스 속성 정보 및 통계 정보 중 적어도 하나를 포함하며, 상기 데이터베이스 속성 정보는 데이터베이스 내의 레코드의 최대 수, 데이터베이스 내의 레코드의 일시중지, 및 교환 장치가 데이터베이스 내의 레코드를 변경하는 것을 허용할지를 포함하며, 그리고 상기 통계 정보는 데이터베이스 내의 레코드의 총수, 데이터베이스와 패킷 간의 매칭의 총수, 매칭 성공 횟수의 총수, 및 각각의 레코드의 매칭 성공 횟수의 총수를 포함한다.
선택적으로, 상기 교환 장치는:
상기 제어기에 의해 송신된 데이터베이스 갱신 명령을 수신하고, 상기 데이터베이스 갱신 명령에 따라 데이터베이스를 갱신하도록 구성되어 있는 갱신 모듈(904)
을 더 포함하며,
상기 데이터베이스 갱신 명령은 데이터베이스 삭제 명령 및 레코드 갱신 명령 중 적어도 하나를 포함하며, 상기 레코드 갱신 명령은 데이터베이스에 레코드를 부가하기, 데이터베이스로부터 레코드를 삭제하기, 및 데이터베이스 내의 레코드를 수정하기를 포함한다.
선택적으로, 상기 교환 장치는:
상기 제어기에 의해 송신된 질의 메시지를 수신하고, 상기 제어기에 응답 메시지를 송신하도록 구성되어 있는 송수신기 모듈(905)
을 포함하며,
상기 응답 메시지는 상기 질의 메시지에 대응하고, 상기 질의 메시지는 데이터베이스의 속성 정보, 데이터베이스 내의 레코드의 내용, 및 데이터베이스의 통계 정보 중 하나 이상에 대해 질의하는 데 사용된다.
선택적으로, 상기 교환 장치는:
상기 데이터베이스가 존재하는지를 질의하고, 상기 데이터베이스가 존재할 때, 상기 적어도 하나의 흐름표에 제1 흐름 엔트리를 설정하며, 그리고 상기 데이터베이스가 존재하지 않을 때, 상기 데이터베이스가 존재하지 않는다는 것을 나타내는 메시지를 제어기에 보고하도록 구성되어 있는 질의 모듈(906)
을 더 포함한다.
본 발명의 실시예에서, 흐름표 내의 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용하여 저장되고, 데이터베이스는 많은 레코드를 포함하며, 레코드도 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 모든 값은 다르며, 명령이 같은 흐름 엔트리가 하나의 흐름 엔트리로 간략화될 수 있으며, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리에 존재하는 과잉 정보를 제거하며, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 값이 데이터베이스에 존재하지 않을 때, 부가의 조작을 1회만 실시하여 매칭되어야 하는 정보의 값을 데이터베이스에 부가하고, 부가적인 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험을 회피한다.
실시예 9
본 발명의 실시예는 교환 장치를 제공한다. 도 10을 참조하면, 교환 장치는 서버일 수 있다. 서버는 일반적으로 적어도 하나의 프로세서(1001)(예를 들어 CPU), 적어도 하나의 네트워크 인터페이스(1002) 또는 다른 통신 인터페이스, 메모리(1003), 및 적어도 하나의 통신 버스(1004)를 포함한다. 당업자라면 도 10에 도시된 서버의 구조는 교환 장치에 대해 제한을 두지 않으며, 도면에 도시된 것보다 더 많은 또는 더 적은 수의 구성요소, 또는 일부의 구성요소의 조합, 또는 상이한 구성요소 배치를 포함할 수 있다는 것을 이해할 수 있을 것이다.
이하에서는 교환 장치의 구성요소를 도 10을 참조하여 상세히 설명한다.
통신 버스(1004)는 프로세서(1001), 메모리(1003), 및 네트워크 인터페이스(1002) 간의 접속 및 통신을 수행하도록 구성되어 있다.
적어도 하나의 네트워크 인터페이스(1002)(유선 또는 무선일 수 있다)는 통신 장치와 적어도 2개의 다른 컴퓨터(예를 들어 호스트) 사이 그리고 교환 장치와 적어도 하나의 서버(예를 들어 제어기) 사이의 통신 및 접속을 개별적으로 실행하고(컴퓨터 및 서버는 네트워크 인터페이스(1002)를 공유할 수 있고 교환 장치에 개별적으로 접속된다), 인터넷, 광대역 통신망, 근거리 통신망, 대도시 통신망 등이 사용될 수 있다.
메모리(1003)는 소프트웨어 프로그램 및 애플리케이션 모듈을 저장하도록 구성될 수 있으며, 프로세서(1001)는 메모리(1003)에 저장되어 있는 소프트웨어 프로그램 및 애플리케이션 모듈을 실행함으로써 교환 장치의 다양한 기능 애플리케이션 및 데이터 처리를 실행한다. 메모리(1003)는 주로 프로그램 저장 영역 및 데이터 저장 영역을 포함할 수 있고, 프로그램 저장 영역은 운영체제, 적어도 하나의 기능(예를 들어 흐름표의 흐름 엔트리의 매칭 기능 및 명령 실행 기능)이 필요로 하는 응용 프로그램 등을 저장할 수 있으며, 데이터 저장 영역은 교환 장치의 사용에 따라 생성되는 데이터(예를 들어 저장되는 흐름표 및 데이터베이스) 등을 저장할 수 있다. 또한, 메모리(1003)는 고속 랜덤 액세스 메모리(Random Access Memory, RAM)를 포함할 수 있고, 비휘발성 메모리(non-volatile memory), 예를 들어, 적어도 하나의 저장 장치, 플래시 메모리 장치, 또는 다른 비휘발성 고체 상태 저장 장치를 포함할 수 있다.
프로세서(1001)는 교환 장치의 제어 센터이고, 다양한 인터페이스 및 라인을 사용하여 전체 교환 장치의 부품에 연결되며, 교환 장치의 다양한 기능을 실행하고 메모리(1003)에 저장되어 있는 소프트웨어 프로그램 및/또는 애플리케이션 모듈을 실시 또는 실행함으로써, 그리고 메모리(1003)에 저장되어 있는 데이터를 불러냄으로써 데이터를 처리하며, 이에 의해 교환 장치에 대한 전반적인 모니터링을 수행한다.
구체적으로, 메모리(1003)에 저장되어 있는 소프트웨어 프로그램 및/또는 애플리케이션 모듈을 실시 또는 실행함으로써, 그리고 메모리(1003)에 저장되어 있는 데이터를 불러냄으로써, 프로세서(1001)는:
적어도 하나의 흐름표에 제1 흐름 엔트리를 설정하는 단계를 포함 실행할 수 있으며, 상기 제1 흐름 엔트리는 매칭 필드를 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하고, 수신된 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용된다. 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함한다. 상기 데이터베이스 내의 각각의 레코드는 제1 필드를 포함하고, 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용된다.
바람직하게, 상기 매칭 필드는 데이터베이스의 ID를 지정하고, 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 ID가 상기 데이터베이스의 ID인 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용된다.
바람직하게, 상기 데이터베이스의 각각의 레코드는 제2 필드를 더 포함하고, 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용되며, 그리고 상기 제1 흐름 엔트리는 패킷 처리 명령을 더 포함하며, 상기 패킷 처리 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용된다.
바람직하게, 상기 데이터베이스에 복수의 제1 레코드가 존재할 때, 상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드 중 최초의 제1 필드를 획득하며, 상기 패킷 처리 명령은: 상기 제1 레코드 내의 상기 최초의 제1 파라미터의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용되거나, 또는 상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드를 획득하며, 상기 패킷 처리 명령은: 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라, 상기 교환 장치에 의해 복제되는 복수의 패킷을 개별적으로 처리하도록 교환 장치에 명령하는 데 사용된다.
바람직하게, 상기 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며, 상기 레코드 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며, 상기 제1 수정 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 상기 제1 지정된 데이터베이스에 기록하도록 상기 교환 장치에 명령하는 데 사용되고, 상기 제2 수정 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정값으로 수정하도록 교환 장치에 명령하는 데 사용되고, 상기 부가 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용되며, 그리고 상기 삭제 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 우선순위를 포함하며, 상기 우선순위는 상기 패킷과 각각의 제1 흐름 엔트리 간의 매칭의 순서를 지시하는 데 사용되며, 상기 프로세서는: 상기 흐름표 중 적어도 하나에 제2 흐름 엔트리를 설정하는 단계를 실행할 수 있으며, 상기 제2 흐름 엔트리의 우선순위는 상기 제1 흐름 엔트리의 우선순위보다 낮으며, 상기 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭하며, 상기 제2 흐름 엔트리는 레코드 부가 명령을 포함하고, 상기 레코드 부가 명령은 상기 제2 흐름 엔트리와 매칭하는 패킷에 따라 레코드를 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 네트워크 인터페이스(1002)는: 조작자에 의해 전달된 구성 커맨드를 수신하거나, 상기 제어기에 의해 송신된 데이터베이스 생성 명령을 수신하는 단계를 실행할 수 있으며, 상기 데이터베이스 생성 명령은 데이터베이스 식별자 및 데이터베이스 필드 정보를 포함한다.
선택적으로, 프로세서(1001)는: 상기 구성 커맨드에 따라 데이터베이스를 생성하거나; 또는 상기 데이터베이스 생성 명령에 따라 데이터베이스를 구축하도록 추가로 구성되어 있다.
바람직하게, 상기 데이터베이스 생성 명령은 데이터베이스 속성 정보 및 통계 정보 중 적어도 하나를 포함하며, 상기 데이터베이스 속성 정보는 데이터베이스 내의 레코드의 최대 수, 데이터베이스 내의 레코드의 일시중지, 및 교환 장치가 데이터베이스 내의 레코드를 변경하는 것을 허용할지를 포함하며, 그리고 상기 통계 정보는 데이터베이스 내의 레코드의 총수, 데이터베이스와 패킷 간의 매칭의 총수, 매칭 성공 횟수의 총수, 및 각각의 레코드의 매칭 성공 횟수의 총수를 포함한다.
선택적으로, 상기 네트워크 인터페이스(1002)는 상기 제어기에 의해 송신된 데이터베이스 갱신 명령을 수신하는 단계를 실행할 수 있으며, 상기 데이터베이스 갱신 명령은 데이터베이스 삭제 명령 및 레코드 갱신 명령 중 적어도 하나를 포함하며, 상기 레코드 갱신 명령은 데이터베이스에 레코드를 부가하기, 데이터베이스로부터 레코드를 삭제하기, 및 데이터베이스 내의 레코드를 수정하기를 포함하며,
상기 프로세서(1001)는 상기 데이터베이스 갱신 명령에 따라 데이터베이스를 갱신하도록 추가로 구성되어 있다.
선택적으로, 상기 네트워크 인터페이스(1002)는 상기 제어기에 의해 송신된 질의 메시지를 수신하는 단계를 실행할 수 있으며, 상기 질의 메시지는 데이터베이스의 속성 정보, 데이터베이스 내의 레코드의 내용, 및 데이터베이스의 통계 정보 중 하나 이상에 대해 질의하는 데 사용되며, 상기 프로세서(1001)는 상기 제어기에 응답 메시지를 송신하는 단계를 실행할 수 있으며, 상기 응답 메시지는 상기 질의 메시지에 대응한다.
선택적으로, 상기 프로세서(1001)는: 상기 데이터베이스가 존재하는지를 질의하고, 상기 데이터베이스가 존재할 때, 상기 흐름표 중 적어도 하나에 제1 흐름 엔트리를 설정하며, 그리고 상기 데이터베이스가 존재하지 않을 때, 상기 데이터베이스가 존재하지 않는다는 것을 나타내는 메시지를 제어기에 보고하는 단계를 실행할 수 있다.
본 발명의 실시예에서, 흐름표 내의 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용하여 저장되고, 데이터베이스는 많은 레코드를 포함하며, 레코드도 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 모든 값은 다르며, 명령이 같은 흐름 엔트리가 하나의 흐름 엔트리로 간략화될 수 있으며, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리에 존재하는 과잉 정보를 제거하며, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 값이 데이터베이스에 존재하지 않을 때, 부가의 조작을 1회만 실시하여 매칭되어야 하는 정보의 값을 데이터베이스에 부가하고, 부가적인 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험을 회피한다.
실시예 10
본 발명의 실시예는 제어기를 제공하며, 상기 제어기는:
제1 흐름 엔트리 설치 메시지를 송신하도록 구성되어 있는 제1 송신 모듈
을 포함하며,
상기 제1 흐름 엔트리 설치 메시지는 흐름표 ID 및 제1 흐름 엔트리를 포함하며, 상기 제1 흐름 엔트리 설치 메시지는 상기 흐름표 ID에 대응하는 흐름표에 제1 흐름 엔트리를 설정하도록 교환 장치에 명령하는 데 사용되고, 상기 제1 흐름 엔트리는 매칭 필드를 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하고, 수신된 패킷의 매칭되어야 하는 정보와 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용된다.
상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 ID, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함하며, 상기 데이터베이스 내의 각각의 레코드는 제1 필드를 포함하고, 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용된다.
본 발명의 실시예에서, 흐름표 내의 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용하여 저장되고, 데이터베이스는 많은 레코드를 포함하며, 레코드도 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 모든 값은 다르며, 명령이 같은 흐름 엔트리가 하나의 흐름 엔트리로 간략화될 수 있으며, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리에 존재하는 과잉 정보를 제거하며, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 값이 데이터베이스에 존재하지 않을 때, 부가의 조작을 1회만 실시하여 매칭되어야 하는 정보의 값을 데이터베이스에 부가하고, 부가적인 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험을 회피한다.
실시예 11
본 발명의 실시예는 제어기를 제공하며, 상기 제어기는:
제1 흐름 엔트리 설치 메시지를 송신하도록 구성되어 있는 제1 송신 모듈(1101)
을 포함하며,
상기 제1 흐름 엔트리 설치 메시지는 흐름표 ID 및 제1 흐름 엔트리를 포함하며, 상기 제1 흐름 엔트리 설치 메시지는 상기 흐름표 ID에 대응하는 흐름표에 제1 흐름 엔트리를 설정하도록 교환 장치에 명령하는 데 사용되고, 상기 제1 흐름 엔트리는 매칭 필드를 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하고, 수신된 패킷의 매칭되어야 하는 정보와 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용된다.
상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 ID, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함하며, 상기 데이터베이스 내의 각각의 레코드는 제1 필드를 포함하고, 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용된다.
선택적으로, 상기 매칭 필드는 데이터베이스의 ID를 지정하고, 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 ID가 상기 데이터베이스의 ID인 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용된다.
선택적으로, 상기 데이터베이스의 각각의 레코드는 제2 필드를 더 포함하고, 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용되며, 그리고
상기 제1 흐름 엔트리는 패킷 처리 명령을 더 포함하며, 상기 패킷 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 데이터베이스에 복수의 제1 레코드가 존재할 때, 상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드 중 최초의 제1 필드를 획득하며, 상기 패킷 처리 명령은: 상기 제1 레코드 내의 상기 최초의 제1 파라미터의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용되거나, 또는 상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드를 획득하며, 상기 패킷 처리 명령은: 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라, 상기 교환 장치에 의해 복제되는 복수의 패킷을 개별적으로 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며, 상기 레코드 처리 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며,
상기 제1 수정 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 상기 제1 지정된 데이터베이스에 기록하도록 상기 교환 장치에 명령하는 데 사용되고,
상기 제2 수정 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정값으로 수정하도록 교환 장치에 명령하는 데 사용되고,
상기 부가 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용되며, 그리고
상기 삭제 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 우선순위를 포함하며, 상기 우선순위는 상기 패킷과 상기 제1 흐름 엔트리 각각 간의 매칭의 순서를 지시하는 데 사용되며, 상기 제어기는:
제2 흐름 엔트리 설치 메시지를 송신하도록 구성되어 있는 제2 송신 모듈(1102)
을 더 포함하며,
상기 제2 흐름 엔트리 설치 메시지는 흐름표 식별자 및 제2 흐름 엔트리를 포함하며, 상기 제2 흐름 엔트리의 우선순위는 상기 제1 흐름 엔트리의 우선순위보다 낮으며, 상기 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭하며, 상기 제2 흐름 엔트리는 레코드 부가 명령을 포함하고, 상기 레코드 부가 명령은 상기 제2 흐름 엔트리와 매칭하는 패킷에 따라 레코드를 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제어기는:
상기 교환 장치에 데이터베이스 생성 명령을 송신하도록 구성되어 있는 제3 송신 모듈(1103)
을 더 포함하며,
상기 데이터베이스 생성 명령은 데이터베이스를 생성하도록 교환 장치에 명령하는 데 사용되고, 상기 데이터베이스 생성 명령은 데이터베이스 식별자 및 데이터베이스 필드 정보를 포함한다.
선택적으로, 상기 데이터베이스 생성 명령은 데이터베이스 속성 정보 및 통계 정보 중 적어도 하나를 포함하며, 상기 데이터베이스 속성 정보는 데이터베이스 내의 레코드의 최대 수, 데이터베이스 내의 레코드의 일시중지, 및 교환 장치가 데이터베이스 내의 레코드를 변경하는 것을 허용할지를 포함하며, 그리고 상기 통계 정보는 데이터베이스 내의 레코드의 총수, 데이터베이스와 패킷 간의 매칭의 총수, 매칭 성공 횟수의 총수, 및 각각의 레코드의 매칭 성공 횟수의 총수를 포함한다.
선택적으로, 상기 제어기는:
상기 교환 장치에 데이터베이스 갱신 명령을 송신하도록 구성되어 있는 제4 송신 모듈(1104)
을 더 포함하며,
상기 데이터베이스 갱신 명령은 데이터베이스 삭제 명령 및 레코드 갱신 명령 중 적어도 하나를 포함하며, 상기 레코드 갱신 명령은 데이터베이스에 레코드를 부가하기, 데이터베이스로부터 레코드를 삭제하기, 및 데이터베이스 내의 레코드를 수정하기를 포함한다.
선택적으로, 상기 제어기는:
상기 교환 장치에 질의 메시지를 송신하도록 구성되어 있는 제5 송신 모듈(1105)
을 더 포함하며,
상기 질의 메시지는 데이터베이스의 속성 정보, 데이터베이스 내의 레코드의 내용, 및 데이터베이스의 통계 정보 중 하나 이상에 대해 질의하는 데 사용된다.
선택적으로, 상기 제어기는:
상기 교환 장치에 의해 회신되고 상기 데이터베이스가 존재하지 않는다는 것을 표시하는 메시지를 수신하도록 구성되어 있는 제1 수신 모듈(1106)
을 더 포함한다.
본 발명의 실시예에서, 흐름표 내의 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용하여 저장되고, 데이터베이스는 많은 레코드를 포함하며, 레코드도 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 모든 값은 다르며, 명령이 같은 흐름 엔트리가 하나의 흐름 엔트리로 간략화될 수 있으며, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리에 존재하는 과잉 정보를 제거하며, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 값이 데이터베이스에 존재하지 않을 때, 부가의 조작을 1회만 실시하여 매칭되어야 하는 정보의 값을 데이터베이스에 부가하고, 부가적인 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험을 회피한다.
실시예 12
본 발명의 실시예는 제어기를 제공한다. 도 12를 참조하면, 제어기는 서버일 수 있다. 서버는 일반적으로 적어도 하나의 프로세서(1201)(예를 들어 CPU), 적어도 하나의 네트워크 인터페이스(1202) 또는 다른 통신 인터페이스, 메모리(1203), 및 적어도 하나의 통신 버스(1204)를 포함한다. 당업자라면 도 10에 도시된 서버의 구조는 제어기에 대해 제한을 두지 않으며, 도면에 도시된 것보다 더 많은 또는 더 적은 수의 구성요소, 또는 일부의 구성요소의 조합, 또는 상이한 구성요소 배치를 포함할 수 있다는 것을 이해할 수 있을 것이다.
이하에서는 제어기의 구성요소를 도 12를 참조하여 상세히 설명한다.
통신 버스(1204)는 프로세서(1201), 메모리(1203), 및 네트워크 인터페이스(1202) 간의 접속 및 통신을 수행하도록 구성되어 있다.
적어도 하나의 네트워크 인터페이스(1202)(유선 또는 무선일 수 있다)는 통신 장치와 적어도 2개의 다른 컴퓨터(예를 들어 호스트) 사이 그리고 제어기와 적어도 하나의 서버(예를 들어 제어기) 사이의 통신 및 접속을 개별적으로 실행하고(컴퓨터 및 서버는 네트워크 인터페이스(1202)를 공유할 수 있고 제어기에 개별적으로 접속된다), 인터넷, 광대역 통신망, 근거리 통신망, 대도시 통신망 등이 사용될 수 있다.
메모리(1203)는 소프트웨어 프로그램 및 애플리케이션 모듈을 저장하도록 구성될 수 있으며, 프로세서(1201)는 메모리(1203)에 저장되어 있는 소프트웨어 프로그램 및 애플리케이션 모듈을 실행함으로써 제어기의 다양한 기능 애플리케이션 및 데이터 처리를 실행한다. 메모리(1203)는 주로 프로그램 저장 영역 및 데이터 저장 영역을 포함할 수 있고, 프로그램 저장 영역은 운영체제, 적어도 하나의 기능(예를 들어 흐름표의 흐름 엔트리의 매칭 기능 및 명령 실행 기능)이 필요로 하는 응용 프로그램 등을 저장할 수 있으며, 데이터 저장 영역은 제어기의 사용에 따라 생성되는 데이터(예를 들어 저장되는 흐름표 및 데이터베이스) 등을 저장할 수 있다. 또한, 메모리(1203)는 고속 랜덤 액세스 메모리(Random Access Memory, RAM)를 포함할 수 있고, 비휘발성 메모리(non-volatile memory), 예를 들어, 적어도 하나의 저장 장치, 플래시 메모리 장치, 또는 다른 비휘발성 고체 상태 저장 장치를 포함할 수 있다.
프로세서(1201)는 제어기의 제어 센터이고, 다양한 인터페이스 및 라인을 사용하여 전체 제어기의 부품에 연결되며, 제어기의 다양한 기능을 실행하고 메모리(1203)에 저장되어 있는 소프트웨어 프로그램 및/또는 애플리케이션 모듈을 실시 또는 실행함으로써, 그리고 메모리(1203)에 저장되어 있는 데이터를 불러냄으로써 데이터를 처리하며, 이에 의해 제어기에 대한 전반적인 모니터링을 수행한다.
구체적으로, 메모리(1203)에 저장되어 있는 소프트웨어 프로그램 및/또는 애플리케이션 모듈을 실시 또는 실행함으로써, 그리고 메모리(1203)에 저장되어 있는 데이터를 불러냄으로써, 프로세서(1201)는: 적어도 하나의 흐름표에 제1 흐름 엔트리를 설정하는 단계를 포함 실행할 수 있으며, 상기 제1 흐름 엔트리는 매칭 필드를 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하고, 수신된 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 제어기에 명령하는 데 사용된다. 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 제어기가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함한다. 상기 데이터베이스 내의 각각의 레코드는 제1 필드를 포함하고, 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용된다.
선택적으로, 상기 매칭 필드는 데이터베이스의 ID를 지정하고, 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 ID가 상기 데이터베이스의 ID인 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 제어기에 명령하는 데 추가로 사용된다.
선택적으로, 상기 데이터베이스의 각각의 레코드는 제2 필드를 더 포함하고, 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용되며, 그리고 상기 제1 흐름 엔트리는 패킷 처리 명령을 더 포함하며, 상기 패킷 처리 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 데이터베이스에 복수의 제1 레코드가 존재할 때, 상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드 중 최초의 제1 필드를 획득하며, 상기 패킷 처리 명령은: 상기 제1 레코드 내의 상기 최초의 제1 파라미터의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용되거나, 또는 상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드를 획득하며, 상기 패킷 처리 명령은: 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라, 상기 교환 장치에 의해 복제되는 복수의 패킷을 개별적으로 처리하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며, 상기 레코드 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하도록 교환 장치에 명령하는 데 사용된다.
바람직하게, 상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며, 상기 제1 수정 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 상기 제1 지정된 데이터베이스에 기록하도록 상기 교환 장치에 명령하는 데 사용되고, 상기 제2 수정 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정값으로 수정하도록 교환 장치에 명령하는 데 사용되고, 상기 부가 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용되며, 그리고 상기 삭제 명령은: 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 제1 흐름 엔트리는 우선순위를 포함하며, 상기 우선순위는 상기 패킷과 각각의 제1 흐름 엔트리 간의 매칭의 순서를 지시하는 데 사용되며, 상기 프로세서는: 상기 흐름표 중 적어도 하나에 제2 흐름 엔트리를 설정하는 단계를 실행할 수 있으며, 상기 제2 흐름 엔트리의 우선순위는 상기 제1 흐름 엔트리의 우선순위보다 낮으며, 상기 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭하며, 상기 제2 흐름 엔트리는 레코드 부가 명령을 포함하고, 상기 레코드 부가 명령은 상기 제2 흐름 엔트리와 매칭하는 패킷에 따라 레코드를 지정된 데이터베이스에 부가하도록 교환 장치에 명령하는 데 사용된다.
선택적으로, 상기 프로세서(1201)는: 상기 교환 장치에 데이터베이스 생성 명령을 송신하는 단계를 실행할 수 있으며, 상기 데이터베이스 생성 명령은 데이터베이스를 생성하도록 교환 장치에 명령하는 데 사용되고, 상기 데이터베이스 생성 명령은 데이터베이스 ID 및 데이터베이스 필드 정보를 포함한다.
상기 프로세서(1201)는: 상기 데이터베이스 생성 명령은 데이터베이스 속성 정보 및 통계 정보 중 적어도 하나를 포함하며, 상기 데이터베이스 속성 정보는 데이터베이스 내의 레코드의 최대 수, 데이터베이스 내의 레코드의 일시중지, 및 교환 장치가 데이터베이스 내의 레코드를 변경하는 것을 허용할지를 포함하며, 그리고 상기 통계 정보는 데이터베이스 내의 레코드의 총수, 데이터베이스와 패킷 간의 매칭의 총수, 매칭 성공 횟수의 총수, 및 각각의 레코드의 매칭 성공 횟수의 총수를 포함한다.
선택적으로, 상기 프로세서(1201)는: 상기 교환 장치에 데이터베이스 갱신 명령을 송신하는 단계를 실행할 수 있으며, 상기 데이터베이스 갱신 명령은 데이터베이스 삭제 명령 및 레코드 갱신 명령 중 적어도 하나를 포함하며, 상기 레코드 갱신 명령은 데이터베이스에 레코드를 부가하기, 데이터베이스로부터 레코드를 삭제하기, 및 데이터베이스 내의 레코드를 수정하기를 포함한다.
선택적으로, 상기 프로세서(1201)는: 상기 교환 장치에 질의 메시지를 송신하는 단계를 실행할 수 있으며, 상기 질의 메시지는 데이터베이스의 속성 정보, 데이터베이스 내의 레코드의 내용, 및 데이터베이스의 통계 정보 중 하나 이상에 대해 질의하는 데 사용된다.
선택적으로, 상기 네트워크 인터페이스(1202)는 교환 장치에 의해 회신되고 상기 데이터베이스가 존재하지 않는다는 것을 표시하는 메시지를 수신하도록 구성되어 있다.
본 발명의 실시예에서, 흐름표 내의 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용하여 저장되고, 데이터베이스는 많은 레코드를 포함하며, 레코드도 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 모든 값은 다르며, 명령이 같은 흐름 엔트리가 하나의 흐름 엔트리로 간략화될 수 있으며, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리에 존재하는 과잉 정보를 제거하며, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 값이 데이터베이스에 존재하지 않을 때, 부가의 조작을 1회만 실시하여 매칭되어야 하는 정보의 값을 데이터베이스에 부가하고, 부가적인 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험을 회피한다.
실시예 13
본 발명의 이 실시예는 본 발명의 실시예 3에서 제공하는 패킷 처리 방법에 적용 가능한 교환 장치를 제공하며, 도 13을 참조하면, 상기 교환 장치는:
패킷을 수신하도록 구성되어 있는 제3 수신 모듈(1301);
상기 패킷이 매칭되어야 하는 흐름표 내의 제1 흐름 엔트리의 매칭 필드에 따라, 상기 패킷의 매칭되어야 하는 정보의 값을 획득하도록 구성되어 있는 획득 모듈(1302) - 상기 제1 흐름 엔트리는 매칭 필드 및 패킷 처리 명령을 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하는 데 사용되며, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함함 - ;
상기 매칭 필드의 명령하에서, 상기 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 구성되어 있는 매칭 모듈(1303) - 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용됨 - ; 및
상기 패킷과 매칭하는 제1 레코드가 획득될 때 상기 패킷 처리 명령에 따라 패킷을 처리하도록 구성되어 있는 제1 프로세싱 모듈(1304)
을 포함한다.
본 발명의 실시예에서, 흐름표 내의 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용하여 저장되고, 데이터베이스는 많은 레코드를 포함하며, 레코드도 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 모든 값은 다르며, 명령이 같은 흐름 엔트리가 하나의 흐름 엔트리로 간략화될 수 있으며, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리에 존재하는 과잉 정보를 제거하며, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 값이 데이터베이스에 존재하지 않을 때, 부가의 조작을 1회만 실시하여 매칭되어야 하는 정보의 값을 데이터베이스에 부가하고, 부가적인 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험을 회피한다.
실시예 14
본 발명의 이 실시예는 본 발명의 실시예 3 내지 실시예 6에서 제공하는 패킷 처리 방법에 적용 가능한 교환 장치를 제공하며, 도 14를 참조하면, 상기 교환 장치는:
패킷을 수신하도록 구성되어 있는 제2 수신 모듈(1401);
상기 패킷이 매칭되어야 하는 흐름표 내의 제1 흐름 엔트리의 매칭 필드에 따라, 상기 패킷의 매칭되어야 하는 정보의 값을 획득하도록 구성되어 있는 획득 모듈(1402) - 상기 제1 흐름 엔트리는 매칭 필드 및 패킷 처리 명령을 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하는 데 사용되며, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함함 - ;
상기 매칭 필드의 명령하에서, 상기 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 구성되어 있는 매칭 모듈(1403) - 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용됨 - ; 및
상기 패킷과 매칭하는 제1 레코드가 획득될 때 상기 패킷 처리 명령에 따라 패킷을 처리하도록 구성되어 있는 제1 프로세싱 모듈(1404)
을 포함한다.
선택적으로, 상기 제1 프로세싱 모듈(1404)은 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하도록 구성되어 있으며, 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용된다.
선택적으로, 상기 데이터베이스에 복수의 제1 레코드가 존재할 때, 상기 제1 프로세싱 모듈(1404)은:
상기 제1 레코드 중 최초의 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하거나; 또는 상기 패킷을 복제하여 복수의 패킷을 획득하고, 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 복수의 패킷을 처리하도록 구성되어 있다.
선택적으로, 상기 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며, 상기 제1 프로세싱 모듈(1404)은 상기 레코드 처리 명령의 명령하에서 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하도록 추가로 구성되어 있다.
바람직하게, 상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며, 상기 제1 프로세싱 모듈(1404)은:
상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 제1 수정 명령에 따라 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 제1 지정된 데이터베이스에 기록하고; 상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 제2 수정 명령에 따라 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정 값으로 수정하고; 상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 부가 명령에 따라 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하며; 및/또는 상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 삭제 명령에 따라 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하도록 구성되어 있다.
선택적으로, 상기 제1 흐름 엔트리는 우선순위를 포함하며, 상기 우선순위는 상기 패킷과 각각의 제1 흐름 엔트리 간의 매칭의 순서를 지시하는 데 사용되며, 상기 흐름표에 제2 흐름 엔트리가 추가로 설정되며, 상기 제2 흐름 엔트리의 우선순위는 상기 제1 흐름 엔트리의 우선순위보다 낮으며, 상기 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭하며, 상기 제2 흐름 엔트리는 레코드 부가 명령을 포함하며, 상기 교환 장치는:
상기 패킷과 매칭하는 레코드가 데이터베이스에 존재하지 않을 때, 상기 패킷과 상기 제2 흐름 엔트리 간의 매칭을 수행하고 상기 매칭을 성공적으로 수행하며, 상기 레코드 부가 명령의 명령하에서 상기 패킷에 따라 레코드를 지정된 데이터베이스에 부가하도록 구성되어 있는 제2 프로세싱 모듈(1405)
을 더 포함한다.
본 발명의 실시예에서, 흐름표 내의 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용하여 저장되고, 데이터베이스는 많은 레코드를 포함하며, 레코드도 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 모든 값은 다르며, 명령이 같은 흐름 엔트리가 하나의 흐름 엔트리로 간략화될 수 있으며, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리에 존재하는 과잉 정보를 제거하며, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 값이 데이터베이스에 존재하지 않을 때, 부가의 조작을 1회만 실시하여 매칭되어야 하는 정보의 값을 데이터베이스에 부가하고, 부가적인 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험을 회피한다.
실시예 15
본 발명의 이 실시예는 본 발명의 실시예 3 내지 실시예 6에서 제공하는 패킷 처리 방법에 적용 가능한 교환 장치를 제공한다. 교환 장치는 서버일 수 있다. 서버는 일반적으로 적어도 하나의 프로세서(예를 들어 CPU), 적어도 하나의 네트워크 인터페이스 또는 다른 통신 인터페이스, 메모리, 및 적어도 하나의 통신 버스를 포함한다.
프로세서, 네트워크 인터페이스, 메모리, 및 통신 버스는 도 9에서 제공하는 교환 장치의 프로세서(1001), 네트워크 인터페이스(1002), 메모리(1003), 및 통신 버스(1004)와 같으며(도 10 참조), 이에 대해서는 여기서 설명을 생략한다.
구체적으로, 메모리에 저장되어 있는 소프트웨어 프로그램 및/또는 애플리케이션 모듈을 실시 또는 실행함으로써, 그리고 메모리에 저장되어 있는 데이터를 불러냄으로써 프로세서는: 패킷을 수신하는 단계; 상기 패킷이 매칭되어야 하는 흐름표 내의 제1 흐름 엔트리의 매칭 필드에 따라, 상기 패킷의 매칭되어야 하는 정보의 값을 획득하는 단계 - 상기 제1 흐름 엔트리는 매칭 필드 및 패킷 처리 명령을 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하는 데 사용되며, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함함 - ; 상기 매칭 필드의 명령하에서, 상기 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하는 단계 - 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용됨 - ; 및 상기 패킷과 매칭하는 제1 레코드가 획득될 때 상기 패킷 처리 명령에 따라 패킷을 처리하는 단계를 실행할 수 있다.
선택적으로, 상기 프로세서는: 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하도록 구성되어 있으며, 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용된다.
선택적으로, 상기 데이터베이스에 복수의 제1 레코드가 존재할 때, 상기 프로세서는: 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하는 단계 - ; 또는 상기 패킷을 복제하여 복수의 패킷을 획득하는 단계, 및 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 복수의 패킷을 처리하는 단계를 실행할 수 있다.
선택적으로, 상기 프로세서는 상기 레코드 처리 명령의 명령하에서 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하는 단계를 실행할 수 있다.
바람직하게, 상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며, 상기 프로세서는: 상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 제1 수정 명령에 따라 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 제1 지정된 데이터베이스에 기록하는 단계; 상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 제2 수정 명령에 따라 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정 값으로 수정하는 단계; 상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 부가 명령에 따라 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하는 단계; 및/또는 상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 삭제 명령에 따라 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하는 단계를 실행할 수 있다.
선택적으로, 상기 제1 흐름 엔트리는 우선순위를 포함하며, 상기 우선순위는 상기 패킷과 각각의 제1 흐름 엔트리 간의 매칭의 순서를 지시하는 데 사용되며, 상기 흐름표에 제2 흐름 엔트리가 추가로 설정되며, 상기 제2 흐름 엔트리의 우선순위는 상기 제1 흐름 엔트리의 우선순위보다 낮으며, 상기 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭하며, 상기 제2 흐름 엔트리는 레코드 부가 명령을 포함하며, 상기 프로세서는: 상기 패킷과 매칭하는 레코드가 데이터베이스에 존재하지 않을 때, 상기 패킷과 상기 제2 흐름 엔트리 간의 매칭을 수행하고 상기 매칭을 성공적으로 수행하는 단계, 및 상기 레코드 부가 명령의 명령하에서 상기 패킷에 따라 레코드를 지정된 데이터베이스에 부가하는 단계를 실행할 수 있다.
본 발명의 실시예에서, 흐름표 내의 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용하여 저장되고, 데이터베이스는 많은 레코드를 포함하며, 레코드도 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 모든 값은 다르며, 명령이 같은 흐름 엔트리가 하나의 흐름 엔트리로 간략화될 수 있으며, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리에 존재하는 과잉 정보를 제거하며, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 값이 데이터베이스에 존재하지 않을 때, 부가의 조작을 1회만 실시하여 매칭되어야 하는 정보의 값을 데이터베이스에 부가하고, 부가적인 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험을 회피한다.
실시예 15
본 발명의 실시예는 본 발명의 실시예 3 내지 실시예 6에서 제공하는 패킷 처리 방법에 적용 가능하다. 교환 장치는 서버일 수 있다. 서버는 일반적으로 적어도 하나의 프로세서(예를 들어 CPU), 적어도 하나의 네트워크 인터페이스 또는 다른 통신 인터페이스, 메모리, 및 적어도 하나의 통신 버스를 포함한다.
프로세서, 네트워크 인터페이스, 메모리, 및 통신 버스는 실시예 9에서 제공하는 교환 장치의 프로세서(1001), 네트워크 인터페이스(1002), 메모리(1003), 및 통신 버스(1004)와 같으며, 이에 대해서는 여기서 설명하지 않는다.
구체적으로, 메모리에 저장되어 있는 소프트웨어 프로그램 및/또는 애플리케이션 모듈을 실시 또는 실행함으로써, 그리고 메모리에 저장되어 있는 데이터를 불러냄으로써,
상기 프로세서는: 패킷을 수신하는 단계; 상기 패킷이 매칭되어야 하는 흐름표 내의 제1 흐름 엔트리의 매칭 필드에 따라, 상기 패킷의 매칭되어야 하는 정보의 값을 획득하는 단계 - 상기 제1 흐름 엔트리는 매칭 필드 및 패킷 처리 명령을 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하는 데 사용되며, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함함 - ; 상기 매칭 필드의 명령하에서, 상기 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하는 단계 - 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용됨 - ; 및 상기 패킷과 매칭하는 제1 레코드가 획득될 때 상기 패킷 처리 명령에 따라 패킷을 처리하는 단계를 실행할 수 있다.
선택적으로, 상기 프로세서는 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하는 단계를 실행할 수 있으며, 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용된다.
선택적으로, 상기 데이터베이스에 복수의 제1 레코드가 존재할 때, 상기 프로세서는: 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하는 단계; 또는 상기 패킷을 복제하여 복수의 패킷을 획득하는 단계, 및 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 복수의 패킷을 처리하는 단계를 실행할 수 있다.
선택적으로, 상기 프로세서는: 상기 레코드 처리 명령의 명령하에서 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하는 단계를 실행할 수 있다.
바람직하게, 상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며, 상기 프로세서는: 상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 제1 수정 명령에 따라 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 제1 지정된 데이터베이스에 기록하는 단계; 상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 제2 수정 명령에 따라 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정 값으로 수정하는 단계; 상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 부가 명령에 따라 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하는 단계; 및/또는 상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 삭제 명령에 따라 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하는 단계를 실행할 수 있다.
선택적으로, 상기 제1 흐름 엔트리는 우선순위를 포함하며, 상기 우선순위는 상기 패킷과 각각의 제1 흐름 엔트리 간의 매칭의 순서를 지시하는 데 사용되며, 상기 흐름표에 제2 흐름 엔트리가 추가로 설정되며, 상기 제2 흐름 엔트리의 우선순위는 상기 제1 흐름 엔트리의 우선순위보다 낮으며, 상기 제2 흐름 엔트리는 보편적으로 모든 패킷과 매칭하며, 상기 제2 흐름 엔트리는 레코드 부가 명령을 포함하며, 상기 프로세서는: 상기 패킷과 매칭하는 레코드가 데이터베이스에 존재하지 않을 때, 상기 패킷과 상기 제2 흐름 엔트리 간의 매칭을 수행하고 상기 매칭을 성공적으로 수행하는 단계, 및 상기 레코드 부가 명령의 명령하에서 상기 패킷에 따라 레코드를 지정된 데이터베이스에 부가하는 단계를 실행할 수 있다.
본 발명의 실시예에서, 흐름표 내의 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용하여 저장되고, 데이터베이스는 많은 레코드를 포함하며, 레코드도 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 모든 값은 다르며, 명령이 같은 흐름 엔트리가 하나의 흐름 엔트리로 간략화될 수 있으며, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리에 존재하는 과잉 정보를 제거하며, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 값이 데이터베이스에 존재하지 않을 때, 부가의 조작을 1회만 실시하여 매칭되어야 하는 정보의 값을 데이터베이스에 부가하고, 부가적인 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험을 회피한다.
실시예 16
본 발명의 이 실시예는 패킷 처리 시스템을 제공한다. 도 15에 도시된 바와 같이, 시스템은 제어기(1501) 및 교환 장치(1502)를 포함한다.
구체적으로, 제어기(1501)는 본 발명의 실시예 10 내지 12에 설명된 제어기일 수 있으며, 교환 장치(1502)는 본 발명의 실시예 7, 8, 9, 13, 14, 및 15에 설명된 교환 장치일 수 있으며, 이에 대해서는 여기서 설명하지 않는다.
본 발명의 실시예에서, 흐름표 내의 흐름 엔트리의 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 (지정된) 값은 데이터베이스 내의 레코드의 필드를 사용하여 저장되고, 데이터베이스는 많은 레코드를 포함하며, 레코드도 많은 필드를 포함하며, 많은 필드는 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 대량의 값을 저장할 수 있다. 이 방법에서, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 모든 값은 다르며, 명령이 같은 흐름 엔트리가 하나의 흐름 엔트리로 간략화될 수 있으며, 이에 의해 흐름 엔트리의 수가 감소하고, 흐름 엔트리에 존재하는 과잉 정보를 제거하며, 매칭 필드에 의해 지정되고 매칭되어야 하는 정보에 관한 값이 데이터베이스에 존재하지 않을 때, 부가의 조작을 1회만 실시하여 매칭되어야 하는 정보의 값을 데이터베이스에 부가하고, 부가적인 정보 갱신 조작은 수행되지 않아도 되며, 이에 의해 오류의 위험을 회피한다.
본 발명의 실시예에서 제공하는 교환 장치가 패킷을 처리할 때, 기능 모듈의 분할을 예로 든 것에 대해서만 설명하였다. 실제의 응용에서, 기능들은 필요에 따라 다른 기능 모듈에 의해 실현되도록 할당될 수 있으며, 즉 교환 장치의 내부 구조는 다른 기능 모듈들로 분할되어, 전술한 기능 중 일부 또는 전부가 실현될 수 있다. 또한, 본 발명의 실시예에서 제공하는 교환 장치는 패킷 처리 방법 실시예와 같은 개념에 속하며, 방법 실시예는 이에 대한 구체적 실행에 대한 상세한 설명을 위한 참조의 역할을 수 있으며, 상세한 설명에 대해서는 여기서 다시 설명하지 않는다.
본 발명의 전술한 실시예들의 순번은 단지 설명의 목적을 위한 것일 뿐, 실시예의 우선순위를 지시하도록 의도되지 않는다.
당업자라면 실시예의 단계 중 일부 또는 전부는 하드웨어 또는 관련 하드웨어에 명령을 내리는 소프트웨어에 의해 실현될 수 있다는 것을 이해할 수 있을 것이다. 프로그램은 컴퓨터 판독 가능형 저장 매체에 저장될 수 있다. 저장 매체는: 리드 온리 메모리, 자기 디스크, 광디스크 등을 포함할 수 있다.
이상의 설명은 단지 본 발명의 예시적 실시예에 불과하며, 본 발명을 제한하려는 것이 아니다. 본 발명의 원리를 벗어남이 없이 이루어지는 모든 변형, 등가의 대체, 및 개선은 본 발명의 보호 범위 내에 있게 된다.

Claims (91)

  1. 교환 장치 구성 방법으로서,
    오픈플로(openflow) 시스템 내의 교환 장치에 하나 이상의 흐름표가 설정되어 있으며,
    상기 교환 장치가 상기 흐름표 중 적어도 하나에 제1 흐름 엔트리를 설정하는 단계 - 상기 제1 흐름 엔트리는 매칭 필드를 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하고, 수신된 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용되며, 상기 데이터베이스는 상기 하나 이상의 흐름표와는 별개의 것이고, 상기 데이터베이스는 데이터베이스 ID를 갖고, 상기 데이터베이스 내의 레코드는 명령을 포함하지 않으며, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함하며, 상기 데이터베이스 내의 각각의 레코드는 제1 필드를 포함하고, 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용됨 - ; 및
    상기 교환 장치가, 상기 제1 흐름 엔트리에 따라, 수신된 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하는 단계
    를 포함하는 교환 장치 구성 방법.
  2. 청구항 1에 있어서,
    상기 매칭 필드는 데이터베이스의 식별자를 지정하고, 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 식별자가 상기 데이터베이스의 식별자인 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되는, 교환 장치 구성 방법.
  3. 청구항 2에 있어서,
    상기 데이터베이스의 각각의 레코드는 제2 필드를 더 포함하고, 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용되며, 그리고
    상기 제1 흐름 엔트리는 패킷 처리 명령을 더 포함하며, 상기 패킷 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용되는, 교환 장치 구성 방법.
  4. 청구항 3에 있어서,
    상기 데이터베이스에 복수의 제1 레코드가 존재할 때,
    상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드 중 최초의 제1 필드를 획득하며, 상기 패킷 처리 명령은, 상기 제1 레코드 내의 상기 최초의 제1 파라미터의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용되거나, 또는
    상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드를 획득하며, 상기 패킷 처리 명령은, 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라, 상기 교환 장치에 의해 복제되는 복수의 패킷을 개별적으로 처리하도록 교환 장치에 명령하는 데 사용되는, 교환 장치 구성 방법.
  5. 오픈플로 시스템 내의 교환 장치에서의 패킷 처리 방법으로서,
    패킷을 수신하는 단계;
    상기 패킷이 매칭되어야 하는 흐름표 내의 제1 흐름 엔트리의 매칭 필드에 따라, 상기 패킷의 매칭되어야 하는 정보의 값을 획득하는 단계 - 상기 제1 흐름 엔트리는 매칭 필드 및 패킷 처리 명령을 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하는 데 사용되며, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함함 - ;
    상기 매칭 필드의 명령하에서, 상기 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하는 단계 - 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용되고, 상기 데이터베이스는 상기 흐름표와는 별개의 것이고, 상기 데이터베이스는 데이터베이스 ID를 갖고, 상기 데이터베이스 내의 레코드는 명령을 포함하지 않음 - ; 및
    상기 패킷과 매칭하는 제1 레코드가 획득될 때 상기 패킷 처리 명령에 따라 패킷을 처리하는 단계
    를 포함하는 패킷 처리 방법.
  6. 청구항 5에 있어서,
    상기 패킷 처리 명령에 따라 패킷을 처리하는 단계는,
    상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하는 단계 - 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용됨 -
    를 포함하는, 패킷 처리 방법.
  7. 청구항 6에 있어서,
    상기 데이터베이스에 복수의 제1 레코드가 존재할 때, 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하는 단계 - 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용됨 - 는,
    상기 제1 레코드 중 최초의 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 패킷을 처리하는 단계; 또는
    상기 패킷을 복제하여 복수의 패킷을 획득하고, 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 복수의 패킷을 처리하는 단계
    를 포함하는, 패킷 처리 방법.
  8. 청구항 5 내지 청구항 7 중 어느 한 항에 있어서,
    상기 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며,
    상기 레코드 처리 명령의 명령하에서 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하는 단계
    를 더 포함하는 패킷 처리 방법.
  9. 청구항 8에 있어서,
    상기 레코드 처리 명령은 다음의 명령: 제1 수정 명령, 제2 수정 명령, 부가 명령, 및 삭제 명령 중 하나 이상을 포함하며,
    상기 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하는 단계는,
    상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 제1 수정 명령에 따라 제1 지정된 데이터베이스 내의 제1 지정된 레코드의 제1 지정된 필드의 현재 값에 대해 계산을 수행하여, 상기 제1 지정된 필드의 갱신 값을 획득하고 상기 갱신 값을 제1 지정된 데이터베이스에 기록하는 단계;
    상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 제2 수정 명령에 따라 제2 지정된 데이터베이스 내의 제2 지정된 레코드의 제2 지정된 필드의 현재 값을 설정 값으로 수정하는 단계;
    상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 부가 명령에 따라 제3 지정된 레코드를 제3 지정된 데이터베이스에 부가하는 단계; 및/또는
    상기 패킷과 매칭하는 제1 레코드가 획득된 후, 상기 삭제 명령에 따라 제4 지정된 데이터베이스 또는 상기 제4 지정된 데이터베이스 내의 제4 지정된 레코드를 삭제하는 단계
    를 포함하는, 패킷 처리 방법.
  10. 오픈플로 시스템 내의 교환 장치로서,
    상기 교환 장치에 하나 이상의 흐름표가 설정되어 있으며,
    상기 흐름표 중 적어도 하나에 제1 흐름 엔트리를 설정하기 위한 수단 - 상기 제1 흐름 엔트리는 매칭 필드를 포함하고, 상기 매칭 필드는 매칭되어야 하는 정보를 지정하고, 수신된 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 사용되며, 상기 데이터베이스는 상기 하나 이상의 흐름표와는 별개의 것이고, 상기 데이터베이스는 데이터베이스 ID를 갖고, 상기 데이터베이스 내의 레코드는 명령을 포함하지 않으며, 상기 매칭되어야 하는 정보는 패킷 헤더 필드, 교환 장치가 패킷을 수신하는 진입 포트의 식별자, 및 패킷과 관련된 메타데이터 중 하나 이상을 포함하며, 상기 데이터베이스 내의 각각의 레코드는 제1 필드를 포함하고, 상기 제1 필드는 상기 매칭되어야 하는 정보의 지정된 값을 표시하는 데 사용됨 - ; 및
    상기 제1 흐름 엔트리에 따라, 수신된 패킷의 매칭되어야 하는 정보의 값과 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하는 수단
    을 포함하는 교환 장치.
  11. 청구항 10에 있어서,
    상기 매칭 필드는 데이터베이스의 식별자를 지정하고, 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 식별자가 상기 데이터베이스의 식별자인 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되는, 교환 장치.
  12. 청구항 11에 있어서,
    상기 데이터베이스의 각각의 레코드는 제2 필드를 더 포함하고, 상기 제2 필드는 패킷 처리 파라미터를 표시하는 데 사용되며, 그리고
    상기 제1 흐름 엔트리는 패킷 처리 명령을 더 포함하며, 상기 패킷 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 상기 제1 레코드 내의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용되는, 교환 장치.
  13. 청구항 12에 있어서,
    상기 데이터베이스에 복수의 제1 레코드가 존재할 때,
    상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드 중 최초의 제1 필드를 획득하며, 상기 패킷 처리 명령은, 상기 제1 레코드 내의 상기 최초의 제1 파라미터의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라 상기 패킷을 처리하도록 교환 장치에 명령하는 데 사용되거나, 또는
    상기 매칭 필드는 상기 수신된 패킷의 매칭되어야 하는 정보의 값과 상기 데이터베이스 내의 각각의 레코드의 제1 필드 간의 매칭을 수행하도록 교환 장치에 명령하는 데 추가로 사용되어, 상기 복수의 제1 레코드를 획득하며, 상기 패킷 처리 명령은, 상기 복수의 제1 레코드 각각의 제2 필드를 파라미터로서 사용함으로써 상기 패킷 처리 명령에 따라, 상기 교환 장치에 의해 복제되는 복수의 패킷을 개별적으로 처리하도록 교환 장치에 명령하는 데 사용되는, 교환 장치.
  14. 청구항 10 내지 청구항 13 중 어느 한 항에 있어서,
    상기 제1 흐름 엔트리는 레코드 처리 명령을 더 포함하며, 상기 레코드 처리 명령은, 상기 패킷과 매칭하는 제1 레코드가 데이터베이스에 존재할 때, 지정된 데이터베이스 내의 지정된 레코드에 대해 조작을 수행하도록 교환 장치에 명령하는 데 사용되는, 교환 장치.
  15. 오픈플로 시스템 내의 교환 장치로서,
    청구항 5 내지 청구항 7 중 어느 한 항에 따른 방법을 수행하도록 구성되어 있는 교환 장치.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
  59. 삭제
  60. 삭제
  61. 삭제
  62. 삭제
  63. 삭제
  64. 삭제
  65. 삭제
  66. 삭제
  67. 삭제
  68. 삭제
  69. 삭제
  70. 삭제
  71. 삭제
  72. 삭제
  73. 삭제
  74. 삭제
  75. 삭제
  76. 삭제
  77. 삭제
  78. 삭제
  79. 삭제
  80. 삭제
  81. 삭제
  82. 삭제
  83. 삭제
  84. 삭제
  85. 삭제
  86. 삭제
  87. 삭제
  88. 삭제
  89. 삭제
  90. 삭제
  91. 삭제
KR1020167004283A 2013-07-19 2013-07-19 교환 장치, 제어기, 및 교환 장치 구성 방법, 및 패킷 처리 방법 및 시스템 KR101864811B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/079678 WO2015006970A1 (zh) 2013-07-19 2013-07-19 交换设备、控制器、交换设备配置、报文处理方法及系统

Publications (2)

Publication Number Publication Date
KR20160033753A KR20160033753A (ko) 2016-03-28
KR101864811B1 true KR101864811B1 (ko) 2018-06-05

Family

ID=52345727

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167004283A KR101864811B1 (ko) 2013-07-19 2013-07-19 교환 장치, 제어기, 및 교환 장치 구성 방법, 및 패킷 처리 방법 및 시스템

Country Status (6)

Country Link
US (1) US10103988B2 (ko)
EP (1) EP3021533B1 (ko)
KR (1) KR101864811B1 (ko)
CN (1) CN104782087B (ko)
RU (1) RU2628476C1 (ko)
WO (1) WO2015006970A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150063110A1 (en) * 2013-09-04 2015-03-05 Electronics And Telecommunications Research Institute Programmable sensor networking apparatus and sensor networking service method using the same
CN105684382A (zh) * 2014-08-11 2016-06-15 华为技术有限公司 报文的控制方法、交换机及控制器
CN105577548B (zh) * 2014-10-10 2018-10-09 新华三技术有限公司 一种软件定义网络中报文处理方法和装置
CN108287706B (zh) * 2017-05-10 2021-09-14 腾讯科技(深圳)有限公司 数据处理方法及装置
US11444877B2 (en) * 2019-03-18 2022-09-13 At&T Intellectual Property I, L.P. Packet flow identification with reduced decode operations
CN110868422B (zh) * 2019-11-20 2023-04-18 杭州安恒信息技术股份有限公司 一种Http站点检测方法、装置、设备、介质
CN111343108B (zh) * 2020-02-24 2021-10-22 苏州盛科通信股份有限公司 一种Mac表项学习转发的方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011160171A (ja) 2010-02-01 2011-08-18 Nec Corp インタフェース制御方式、インタフェース制御方法、及びインタフェース制御用プログラム
JP2012175394A (ja) 2011-02-21 2012-09-10 Nippon Telegr & Teleph Corp <Ntt> フロースイッチ、フロー制御システムおよびフロー制御方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7743166B2 (en) * 2003-04-04 2010-06-22 Ellacoya Networks, Inc. Scaleable flow-based application and subscriber traffic control
US7852850B2 (en) * 2006-04-26 2010-12-14 Marvell Israel (M.I.S.L.) Ltd. Double-hash lookup mechanism for searching addresses in a network device
CN102349268B (zh) * 2009-03-09 2015-11-25 日本电气株式会社 OpenFlow通信系统和OpenFlow通信方法
JPWO2011083780A1 (ja) * 2010-01-05 2013-05-13 日本電気株式会社 通信システム、制御装置、処理規則の設定方法、パケットの送信方法およびプログラム
KR101503450B1 (ko) * 2010-03-17 2015-03-18 닛본 덴끼 가부시끼가이샤 통신 시스템, 노드, 제어 서버 및 통신 방법
CN102934400B (zh) * 2010-06-09 2016-08-24 日本电气株式会社 通信系统、逻辑信道控制设备、控制设备、通信方法以及程序
US8897134B2 (en) * 2010-06-25 2014-11-25 Telefonaktiebolaget L M Ericsson (Publ) Notifying a controller of a change to a packet forwarding configuration of a network element over a communication channel
WO2012060403A1 (ja) * 2010-11-02 2012-05-10 日本電気株式会社 通信システム、制御装置、経路制御方法およびプログラム
WO2012073409A1 (en) 2010-12-01 2012-06-07 Nec Corporation Communication system, control device, communication method, and program
US9332479B2 (en) * 2012-01-04 2016-05-03 Ofinno Technologies, Llc Network site for wireless communications
RU2595888C2 (ru) * 2012-03-19 2016-08-27 Нек Корпорейшн Узел связи, способ обработки пакетов и программа
CN102739549B (zh) * 2012-07-13 2015-10-21 华为技术有限公司 接收报文的方法、发送报文的方法及装置
CN102857416B (zh) * 2012-09-18 2016-09-28 中兴通讯股份有限公司 一种实现虚拟网络的方法、控制器和虚拟网络
WO2014061583A1 (ja) * 2012-10-15 2014-04-24 日本電気株式会社 通信ノード、制御装置、通信システム、パケット処理方法及びプログラム
US9537904B2 (en) * 2013-01-24 2017-01-03 Tekelec, Inc. Methods, systems, and computer readable media for using policy knowledge of or obtained by a policy and charging rules function (PCRF) for needs based forwarding of bearer session traffic to network nodes
US8964752B2 (en) * 2013-02-25 2015-02-24 Telefonaktiebolaget L M Ericsson (Publ) Method and system for flow table lookup parallelization in a software defined networking (SDN) system
US20140269299A1 (en) * 2013-03-14 2014-09-18 Hewlett-Packard Development Company, L.P. Network controller normalization of network traffic
CN103209121B (zh) * 2013-03-15 2019-02-01 中兴通讯股份有限公司 基于开放流协议的控制面设备的发现处理方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011160171A (ja) 2010-02-01 2011-08-18 Nec Corp インタフェース制御方式、インタフェース制御方法、及びインタフェース制御用プログラム
JP2012175394A (ja) 2011-02-21 2012-09-10 Nippon Telegr & Teleph Corp <Ntt> フロースイッチ、フロー制御システムおよびフロー制御方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Pfaff, Ben, B. Lantz, and Bea Heller. "Openflow switch specification, version 1.3. 0." Open Networking Foundation (2012).(2012.06.25.)

Also Published As

Publication number Publication date
RU2628476C1 (ru) 2017-08-17
CN104782087B (zh) 2018-03-13
US20160134534A1 (en) 2016-05-12
US10103988B2 (en) 2018-10-16
CN104782087A (zh) 2015-07-15
EP3021533B1 (en) 2019-01-02
EP3021533A1 (en) 2016-05-18
KR20160033753A (ko) 2016-03-28
WO2015006970A1 (zh) 2015-01-22
EP3021533A4 (en) 2016-07-27

Similar Documents

Publication Publication Date Title
KR101864811B1 (ko) 교환 장치, 제어기, 및 교환 장치 구성 방법, 및 패킷 처리 방법 및 시스템
CN102938794B (zh) 地址解析协议arp消息转发方法、交换机和控制器
US20170286158A1 (en) Migration Of Virtual Machines
US11398966B2 (en) Cluster wide packet tracing
US10652142B2 (en) SDN-based ARP implementation method and apparatus
US11847091B2 (en) Data transmission method and device for network on chip and electronic apparatus
US11363675B2 (en) Mesh network system
KR100793349B1 (ko) Ppp 멀티링크를 지원하는 시스템에서의 멀티캐스트트래픽 포워딩 장치 및 제어방법
CN104702438A (zh) Pe设备管理方法以及装置
CN111010329B (zh) 一种报文传输方法及装置
CN113438329B (zh) Mac地址发送方法、装置和系统
EP4131870A1 (en) Service processing method and apparatus, and device and storage medium
CN112887229A (zh) 一种会话信息同步方法及装置
CN113196710B (zh) 分发节点、自动化网络和用于传输报文的方法
KR102226915B1 (ko) 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법, 장치 및 컴퓨터 프로그램
CN115865844B (zh) 基于sdn与ndn的虚实结合动态流量调度方法及装置
US10541914B2 (en) Data packet forwarding method and network device
US20220263794A1 (en) Method, apparatus, and system for generating forwarding information
CN105656814A (zh) 一种sdn网络转发系统与方法
KR101678850B1 (ko) 소프트웨어 정의 네트워크에서 스위치의 변경 방법, 장치 및 컴퓨터 프로그램
JP2017153042A (ja) 通信システム、及びパケット転送方法
JP2021520159A (ja) ネットワークエンティティのモバイルイベントメッセージの伝播方法
CN115708384A (zh) 分布式业务转发方法、装置、系统、存储介质及电子设备
CN117201516A (zh) 数据处理方法、装置、电子设备及存储介质
CN113590268A (zh) 虚拟机迁移方法、arp代理网关及vtep

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