KR101569588B1 - 패킷 출력 제어 방법 및 이를 이용한 네트워크 장치 - Google Patents

패킷 출력 제어 방법 및 이를 이용한 네트워크 장치 Download PDF

Info

Publication number
KR101569588B1
KR101569588B1 KR1020130162390A KR20130162390A KR101569588B1 KR 101569588 B1 KR101569588 B1 KR 101569588B1 KR 1020130162390 A KR1020130162390 A KR 1020130162390A KR 20130162390 A KR20130162390 A KR 20130162390A KR 101569588 B1 KR101569588 B1 KR 101569588B1
Authority
KR
South Korea
Prior art keywords
flow
output
packet
output port
processing
Prior art date
Application number
KR1020130162390A
Other languages
English (en)
Other versions
KR20150026721A (ko
Inventor
이세희
이정욱
안태진
한경아
Original Assignee
주식회사 케이티
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 케이티 filed Critical 주식회사 케이티
Priority to US14/914,696 priority Critical patent/US10103987B2/en
Priority to CN201480047512.1A priority patent/CN105493029B/zh
Priority to PCT/KR2014/008030 priority patent/WO2015030503A1/ko
Publication of KR20150026721A publication Critical patent/KR20150026721A/ko
Application granted granted Critical
Publication of KR101569588B1 publication Critical patent/KR101569588B1/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
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3063Pipelined operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/13Flow control; Congestion control in a LAN segment, e.g. ring or bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/354Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]

Landscapes

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

Abstract

패킷 출력 제어 방법 및 이를 이용한 네트워크 장치가 개시된다. 본 발명에 따른 패킷 출력 제어 방법은 파이프라인으로 연결된 복수 개(N개; N은 2이상의 자연수)의 플로우 테이블에서 플로우 처리 방법에 있어서, 플로우의 유입된 패킷이 복수 개의 테이블 중, 제1 테이블부터 제N-1번 테이블을 경유하는 단계, 패킷이 N-1번째 테이블을 경유한 이후에, 패킷에 대해 N-1번째 테이블에 의해 지시되는 출력 전용 N번째 테이블(egress table)의 처리를 수행하는 단계 및 N번째 테이블의 처리 이후에 상기 패킷을 출력하는 단계를 포함하여 구성될 수 있다. 따라서, 출력 포트 정보를 이용한 다양한 동작을 통해 최종 출력을 유연한 제어가 가능하다.

Description

패킷 출력 제어 방법 및 이를 이용한 네트워크 장치{Method for controlling egress or packets and apparatus using the same}
본 발명은 소프트웨어 정의 네트워킹(SDN; Software Defined Networking) 기술에 관한 것으로, 더욱 상세하게는 네트워크 장치에서 패킷 포워딩을 처리하기 위한 플로우 테이블의 파이프라인(pipeline) 처리 기술에 관한 것으로, 패킷의 출력을 제어하기 위한 방법 및 이를 이용한 네트워크 장치에 관한 것이다.
SDN(Software Defined Network)은 라우터나 스위치 등의 기본 네트워크 장비에 관계없이 사용자가 통제 권한을 가지며, 별도의 소프트웨어 컨트롤러가 트래픽 흐름을 제어하는 사용자 중심의 네트워크를 의미한다.
오픈플로우(OpenFlow)는 SDN 기술의 대표적 표준의 하나로, 하드웨어(스위치)와 컨트롤러(network OS) 사이를 연결하는 인터페이스를 정의하며, 네트워크를 통해 데이터 패킷을 어떻게 전달할 것인지 제어하기 위한 기능(control plane)을 물리적 네트워크와 분리하여 데이터 전달 기능(data plane)과 상호작용 하기 위한 프로토콜이다.
플로우 테이블(flow table)은 복수개의 테이블로 구성되어 있으며, 테이블간에 파이프라인(pipeline)으로 연결되어 유연한 병렬 프로세싱이 가능해짐으로써 OpenFlow 스위치에 효율성과 유연성을 제공한다.
파이프라인(pipeline)을 통해 패킷들이 프로세싱 될 때, 각 테이블에서 형성된 동작(action) 필드는 리스트의 형태로 동작 리스트(action list)에 저장이 되어 파이프라인 마지막에 동작 집합(action set)으로 이루어지고, 각 테이블 간에는 메타데이터(metadata) 제공으로 메시지를 전달한다.
스위치에 패킷이 유입되어 파이프라인의 각 플로우 테이블을 통과할 때, 플로우 별 지시어(instruction)에 의해 매치 필드(match fields)와 동작 집합이 업데이트 된다.
각 플로우에 대한 동작은 지시어에 의해 즉시 실행 되거나, 동작 집합에 누적이 될 수 있는데, 누적된 동작 집합은 최종적으로 모든 플로우 테이블을 통과 후 마지막에 실행된다.
파이프라인 처리 과정에서 실행되는 출력포트(output port) 명령어는 패킷을 최종 포워딩하는 액션으로서, 일단 출력포트 명령어가 수행이 되면 해당 플로우에 대하여 더 이상 다른 명령어를 수행할 수 없다. 즉, 출력포트 정보를 활용하여 다른 액션에 연결할 수 있는 방법이 없다.
또한, 그룹 테이블(group table)은 다수 개의 포트에 대한 멀티 캐스트 등에 활용되는데, 출력포트 명령어 액션을 통해 최종적으로 패킷을 포워딩함으로써 종료된다. 즉, 그룹 테이블의 실행결과를 이용하여 다른 액션에 연결할 수 있는 방법이 없다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 출력포트에 기초하여 플로우를 제어할 수 있도록 하는 플로우 처리 방법을 제공하는데 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 다른 목적은, 출력포트에 기초하여 플로우를 제어할 수 있도록 하는 플로우 처리 방법을 수행하는 네트워크 장치를 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명은, 파이프라인으로 연결된 복수 개(N개; N은 2이상의 자연수)의 플로우 테이블에서 플로우 처리 방법에 있어서, 상기 플로우의 유입된 패킷이 상기 복수 개의 테이블 중, 제1 테이블부터 제N-1번 테이블을 경유하는 단계, 상기 패킷이 상기 N-1번째 테이블을 경유한 이후에, 상기 패킷에 대해 상기 N-1번째 테이블에 의해 지시되는 출력 전용 N번째 테이블(egress table)의 처리를 수행하는 단계 및 상기 N번째 테이블의 처리 이후에 상기 패킷을 출력하는 단계를 포함한, 플로우 처리 방법을 제공한다.
여기에서, 상기 플로우 처리 방법은 소프트웨어 정의 네트워킹(Software Defined Networking)을 지원하는 네트워크 장비에서 수행될 수 있다.
여기에서, 상기 N-1번째 테이블을 경유한 이후에, 해당 플로우의 출력 포트(output port)가 지시되며, 상기 지시된 출력 포트에 의해서 상기 N번째 테이블에서 처리될 동작이 결정될 수 있다.
이때, 상기 출력 전용 N번째 테이블의 처리는 지시된 출력 포트로 출력될 플로우의 패킷에 대한 가상 로컬 에어리어 네트워크(VLAN; Virtual LAN) 태그(tag)의 부착을 포함할 수 있다.
이때, 상기 출력 전용 N번째 테이블의 처리는 지시된 출력 포트로 출력될 플로우에 대한 카운팅을 포함할 수 있고, 상기 플로우에 대한 카운팅이 소정의 임계값과 동일하거나 초과하는 경우, 출력 포트의 변경이 수행될 수 있다.
이때, 상기 출력 전용 N번째 테이블의 처리는 지시된 출력 포트로 출력될 플로우의 패킷 사이즈를 소정의 임계값과 비교하여, 상기 패킷 사이즈가 소정의 임계값과 동일하거나 초과하는 경우, 상기 패킷에 대한 분할(fragmentation)을 수행하도록 구성될 수 있다.
상기 다른 목적을 달성하기 위한 본 발명은, 외부로부터 플로우의 패킷을 입력받는 패킷 입력부, 복수 개(N개; N은 2이상의 자연수)의 플로우 테이블을 저장하는 플로우 테이블 저장부, 상기 패킷 입력부로부터 입력된 패킷에 대하여, 상기 플로우 테이블 저장부에 저장된 상기 복수 개의 테이블 중, 제1 테이블부터 제N-1번 테이블을 경유한 이후에, 상기 N-1번째 테이블에 의해 지시되는 출력 전용 N번째 테이블(egress table)의 동작을 수행하는 플로우 테이블 처리부 및 상기 플로우 테이블 처리부에서 상기 출력 전용 N번째 테이블의 처리를 완료한 이후에 상기 플로우의 패킷을 외부로 출력하는 패킷 출력부를 포함한 네트워크 장치를 제공한다.
여기에서, 상기 네트워크 장치는 소프트웨어 정의 네트워킹(Software Defined Networking)을 지원하는 네트워크 장치일 수 있다.
여기에서, 상기 N-1번째 테이블을 경유한 이후에, 해당 패킷의 출력 포트(output port)가 지시되며, 상기 지시된 출력 포트에 의해서 상기 N번째 테이블에서 처리될 동작이 결정될 수 있다.
이때, 상기 출력 전용 N번째 테이블의 처리는 지시된 출력 포트로 출력될 패킷에 대한 가상 로컬 에어리어 네트워크(VLAN; Virtual LAN) 태그(tag)의 부착을 포함할 수 있다.
이때, 상기 출력 전용 N번째 테이블의 처리는 지시된 출력 포트로 출력될 플로우에 대한 카운팅을 포함할 수 있고, 상기 플로우에 대한 카운팅이 소정의 임계값과 동일하거나 초과하는 경우, 출력 포트의 변경이 수행될 수 있다.
이때, 상기 출력 전용 N번째 테이블의 처리는 지시된 출력 포트로 출력될 플로우의 패킷 사이즈를 소정의 임계값과 비교하여, 상기 패킷 사이즈가 소정의 임계값과 동일하거나 초과하는 경우, 상기 패킷에 대한 분할(fragmentation)을 수행하도록 구성될 수 있다.
본 발명에 따른 플로우 처리 방법과, 플로우 처리 방법을 수행하는 네트워크 장치를 이용하면, 플로우 테이블을 이용한 파이프라인의 처리에 있어서, 출력 전용의 출력 테이블(egress table)을 이용하여 결정된 출력 포트(output port)에 매칭되는 동작을 수행 가능하다. 따라서, 출력 포트 정보를 이용한 다양한 동작을 통해 최종 출력을 유연하게 제어할 수 있게 된다.
도 1과 도 2는 파이프라인 방식 플로우 테이블의 처리 방법을 설명하기 위한 개념도들이다.
도 3은 본 발명에 따른 플로우 처리 방법을 설명하기 위한 개념도이다.
도 4는 본 발명에 따른 플로우 처리 방법을 이용하여 VLAN ID를 태깅하는 실시예를 설명하기 위한 개념도이다.
도 5는 본 발명에 따른 플로우 처리 방법을 이용하여 VLAN ID를 태깅하는 실시예를 설명하기 위한 다른 개념도이다.
도 6은 본 발명에 따른 플로우 처리 방법을 이용한 플로우 카운팅을 통한 출력 포트 변경 실시예를 설명하기 위한 개념도이다.
도 7은 본 발명에 따른 플로우 처리 방법을 이용한 패킷 분할(fragmentation) 실시예를 설명하기 위한 개념도이다.
도 8은 본 발명에 따른 출력 테이블의 필드 구성을 보여주는 개념도이다.
도 9는 출력 테이블의 매치 필드 구조를 보여주는 개념도이다.
도 10은 본 발명에 따른 출력 테이블에서 와일드 카드를 이용한 매치 필드의 활용 예를 설명하기 위한 예시이다.
도 11은 본 발명에 따른 출력 테이블에서 크기 비교를 위한 매치 필드의 활용 예를 설명하기 위한 예시이다.
도 12는 본 발명에 따른 출력 테이블에서 플로우 카운팅을 위한 매치 필드의 활용 예를 설명하기 위한 예시이다.
도 13은 본 발명에 따른 플로우 처리 방법을 수행하기 위한 네트워크 장치의 일 실시예를 설명하기 위한 블록도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
네트워크 장치에서 파이프라인 방식으로 플로우 테이블을 처리하는 방법은, 플로우 테이블을 구성하는 각 테이블을 통과하면서 각 테이블의 플로우 별 지시어(instruction)에 의한 동작을 즉시 실행하는 방법과, 플로우 별 지시어를 동작 집합에 누적시키고 누적된 동작 집합을 모든 플로우 테이블을 통과 후에 실행하는 방법이 있다.
도 1과 도 2는 파이프라인 방식 플로우 테이블의 처리 방법을 설명하기 위한 개념도들이다.
먼저, 도 1은 n개의 테이블들(101-1, ..., 101-n)로 구성된 플로우 테이블의 마지막 n번째 테이블(101-n)에서 특정 플로우에 대해서 출력 동작(102; output action)이나 그룹 출력 동작(103; group output action)이 실행되는 경우를 예시하고 있다.
반면, 도 2는 n개의 테이블들(101-1, ..., 101-n)로 구성된 플로우 테이블의 마지막 n번째 테이블(101-n)를 거친 이후에 동작집합(104)에 누적된 명령어들 중 출력 동작(105) 또는 그룹 출력 동작(106)이 실행되는 경우를 예시하고 있다. 동작집합 내에서도, 출력 동작 또는 그룹 출력 동작은 우선순위에 있어서 제일 마지막에 실행된다.
어느 경우이든, 출력 동작 또는 그룹 출력 동작에 의해서 출력 포트(output port)가 지정되면, 지정된 출력 포트로 패킷이 포워딩된다. 그리고, 일단 출력포트 가 지정이 되면 해당 플로우에 대하여 더 이상 다른 명령어를 수행할 수 없다. 즉, 출력포트 정보를 활용하여 다른 액션에 연결할 수 있는 방법이 없다.
또한, 플로우 테이블 간 흐름은 파이프라인 처리방식으로 연결되는데, Goto Table 지시어를 이용해서 다른 플로우 테이블로 이동시 순차적인 전진방향으로만 이동할 수 있으며, 따라서 마지막 플로우 테이블에서는 Goto 지시어를 사용할 수 없다.
본 발명에 따른 플로우 처리 방법
본 발명에 따른 플로우 처리 방법에서는, 상술된 문제점을 해결하기 위해서, 파이프라인으로 연결된 복수 개(n개; n은 2이상의 자연수)의 테이블로 구성된 플로우 테이블에서의 플로우 처리 방법에 있어서, 가장 마지막 테이블(n번째 테이블)로서 출력 테이블(egress table)을 도입하는 것을 특징으로 한다.
도 3은 본 발명에 따른 플로우 처리 방법을 설명하기 위한 개념도이다.
도 3을 참조하면, 본 발명에 따른 스위치는 모두 파이프라인으로 연결된 n-1개의 플로우 테이블(301-1,301-2, ...)과 출력 테이블(302)을 포함한다.
스위치에 유입된 패킷은 제1 테이블(301-1) 부터 제(n-1) 테이블(301-(n-1))까지 통과한 후, 누적된 동작 집합(302)을 처리하게 되며, 동작 집합(302)에 정의된 액션 중, 맨 마지막에 그룹 출력(303) 또는 출력 동작(304)을 실행한 후, 최종 출력 전에 출력 테이블(Egress Table; 305)을 경유한다. 또는, 동작 집합을 거치지 않고, 앞서 도 1을 통하여 설명된 바와 같이, 출력 동작이나 그룹 출력 동작의 즉시 실행에 의해서 출력 테이블에 도달할 수도 있다.
출력 테이블(305)에서는, 그룹 출력(303) 또는 출력 동작(304)에 의하여 지시된 출력 포트(output port)에 대해 정해진 동작을 수행한 후, 최종적으로 패킷이 출력된다.
이하에서는, 상술된 본 발명에 따른 플로우 처리 방법을 보다 더 자세히 설명하기 위해서, 출력전용 테이블을 이용하는 가장 대표적인 실시예로서 VLAN ID 태깅(tagging) 실시예를 먼저 설명한다.
도 4는 본 발명에 따른 플로우 처리 방법을 이용하여 VLAN ID를 태킹하는 실시예를 설명하기 위한 개념도로서, 플로우 테이블의 출력 동작 이후의 출력 테이블의 처리 방법에 대한 예시이다.
스위치(400)에 들어온 패킷은 제1 플로우 테이블(410)과 제2 플로우 테이블(420)를 거치게 되며, 각 테이블의 매치 필드(match field)에서 해당하는 플로우를 찾아 대응된 동작(action)을 수행하게 된다.
도 4에 예시된 본 발명에 따른 실시예에서는, 제2 플로우 테이블(420)에서 출력 포트 동작(output port action)을 수행 후, 스위치를 빠져나가지 않고, 출력 테이블(430)을 경유한다. 출력 테이블(430)에서는, 앞서 제2 플로우 테이블에서 지시된 출력 포트에 따라 대응되는 'Push VLAN' 동작이 추가적으로 실행되며, 이후에 패킷은 출력된다. 즉, 출력 포트1(output port1)이 지정된 패킷들에 대해서는 출력 테이블에서 'Push VLAN1' 동작이 수행되며, 출력 포트2(output port2)가 지정된 패킷들에 대해서는 출력 테이블에서 'Push VLAN2' 동작이 수행된다.
상술된 예시에서, 만약 출력 테이블이 사용되지 않는 다면, 제2 플로우 테이블에서 출력 포트1로 출력되는 모든 플로우 항목에 대해서 출력포트1로 출력하는 동작("Output port1") 이전에 "Push VLAN1"을 동작집합에 일일이 추가해야 하므로, 제2 플로우 테이블에 플로우 항목이 많아지면 비효율성이 증가한다.
도 5는 본 발명에 따른 플로우 처리 방법을 이용하여 VLAN ID를 태깅하는 실시예를 설명하기 위한 다른 개념도로서, 그룹 테이블의 그룹 출력 동작 이후의 출력 테이블의 처리 방법에 대한 예시이다.
스위치(500)에 들어온 패킷은 제1 플로우 테이블(510)과 제2 플로우 테이블(520)을 거치게 되며, 각 테이블의 매치 필드(match field)에서 해당하는 플로우를 찾아 대응된 동작(action)을 수행하게 된다
제2 플로우 테이블(520)에서, 그룹 명령어에 의해서 그룹 테이블(530)에 정의된 다수의 출력 포트 동작(즉, 멀티 캐스팅)을 수행 후, 출력 테이블(540)을 경유하게 된다.
출력 테이블(540)에서는 그룹 테이블에 의해 지시된 출력 포트에 따라, 포트별로 Push VLAN 명령어로 추가 실행되며, 이후에 패킷은 스위치(500)로부터 출력된다.
따라서, 출력 테이블을 사용하여 출력 포트 필드를 매칭하고 포트별 Push VLAN 동작에 대한 지정을 통해, 해당 출력 포트로 출력되는 모든 플로우 항목에 대한 제어가 가능하다. 이를 통하여, 파이프라인 처리에서 플로우 테이블 간 독립성 및 병렬처리의 특성을 최대한 활용 가능하다.
이하에서는, 상술된 본 발명에 따른 플로우 처리 방법을 보다 더 자세히 설명하기 위해서, 출력전용 테이블을 이용하는 추가 실시예들로서 플로우 카운팅(flow counting)을 이용한 출력 포트 변경과, 패킷 분할(packet fragmentation) 실시예들을 설명한다.
도 6은 본 발명에 따른 플로우 처리 방법을 이용한 플로우 카운팅을 통한 출력 포트 변경 실시예를 설명하기 위한 개념도이다.
스위치(600)에 유입된 패킷은 마지막 플로우 테이블(610)에 도달하면, 이에 따라 출력 포트1을 지정하는 동작이 실행되고(S610), 이 패킷은 출력 테이블(620)을 경유한다(S620). 스위치에서는 출력 포트1에 대응된 출력 테이블의 동작으로서 출력 포트1에 해당되는 플로우들에 대한 카운팅을 수행하여, 소정의 임계값을 초과하였는지 여부를 체크한다(S630).
임계값 초과 여부를 체크한 결과, 플로우에 대한 카운팅이 임계값을 초과하지 않았다면 출력 포트1(output port 1) 동작을 그대로 실행하여 출력 포트 변경없이 출력 큐(Output Queues; 630)에 전달한다(S640). 하지만, 플로우에 대한 카운팅이 소정의 임계값을 초과하는 경우, 패킷에 대한 출력 포트를 출력 포트2(Output port 2)로 변경하여 출력 큐(630)에 전달한다(S650).
도 7은 본 발명에 따른 플로우 처리 방법을 이용한 패킷 분할(fragmentation) 실시예를 설명하기 위한 개념도이다.
스위치(700)에 유입된 패킷은 마지막 플로우 테이블(710)에 도달하면, 이에 따라 출력 포트 1을 지정하는 동작이 실행되고(S710), 이 패킷이 출력 테이블(720)을 경유한다(S720). 스위치에서는 출력 포트1을 통하여 패킷을 출력 큐(730)로 내보내기 전에, 해당 출력포트(즉, 출력 포트1)의 MTU(Maximum Transmission Unit) 크기와 현재 유입된 패킷의 크기를 비교한다(S730).
패킷이 MTU 사이즈보다 크지 않은 경우, 출력 포트1의 동작을 그대로 실행하여 패킷 크기의 변경 없이 출력 큐(730)에 전달한다(S740). 하지만, 패킷이 MTU 사이즈보다 큰 경우, 패킷 분할(fragmentation)을 수행한 후 출력 큐(730)에 전달한다(S750).
출력 테이블의 필드 구성 및 매치 필드 구성
도 8은 본 발명에 따른 출력 테이블의 필드 구성을 보여주는 개념도이며, 도 9는 출력 테이블의 매치 필드 구조를 보여주는 개념도이다.
먼저, 도 8을 참조하면, 출력 테이블은 매치 필드(Match Fields), 우선순위(Priority), 카운터(Counters), 지시어(Instructions), 타임아웃(Timeouts), 및 쿠키(Cookie)로 구성될 수 있다.
또한, 도 9를 참조하면, 출력 테이블의 매치 필드는 TLV(Type-Length-Value) 포맷이 반복된 형태로 구성되는데, 보다 상세하게는, Type 필드는 클래스(oxm_class), 필드(oxm_field), 마스킹여부(oxm_hasmask)로 구성되며, Length 필드는 길이(oxm_length)로 구성되고, Value 필드는 매치필드의 실제 매칭값으로 구성된다.
 이러한 구성에서, Type 필드의 클래스(oxm_class)를 별도의 구분값으로 일반 매치필드의 분류와 구별하고, 이에 따라 Value 필드를 연산자 구분(oxm_operator)를 지정하여, 단순 매칭 외에 연산자(oxm_operator)를 활용하여 크기 비교가 가능한 것이 특징이다.
연산자를 이용한 크기 비교 방법은 도 6에서 예시된 플로우 카운팅 실시예나, 도 7에서 예시된 패킷 분할 실시예의 경우에서 활용될 수 있다.
도 10은 본 발명에 따른 출력 테이블에서 와일드 카드를 이용한 매치 필드의 활용 예를 설명하기 위한 예시이다.
도 10을 참조하면, DST_IP에 대하여 10.1.1.1~10.1.1.255를 매칭하기 위해 bitmask 인 255.255.255.0 을 사용하여 매칭하는 경우가 예시된다.
또한, 도 11은 본 발명에 따른 출력 테이블에서 크기 비교를 위한 매치 필드의 활용 예를 설명하기 위한 예시이다.
도 11을 참조하면, 앞서 설명된 도 7의 실시예에서 출력 포트1의 MTU 사이즈와 패킷 사이즈를 비교하기 위해 비교연산자인 '~보다 크다 (>)'를 사용하여 '1400 > MTU size'에 대한 표현식을 이용하는 예시이다. oxm_bitmask를 사용하지 않고, oxm_operator를 '>'로 지정하며, oxm_value에 비교값을 세팅한다.
또한, 도 12는 본 발명에 따른 출력 테이블에서 플로우 카운팅을 위한 매치 필드의 활용 예를 설명하기 위한 예시이다.
도 12를 참조하면, Egress Table를 위한 카운터(1210)와 Egress Flow Entry를 위한 카운터(1220)를 정의하고 관리함으로써 출력 테이블에서의 플로우 카운팅이 가능해질 수 있다.
본 발명에 따른 네트워크 장치
도 13은 본 발명에 따른 플로우 처리 방법을 수행하기 위한 네트워크 장치의 일 실시예를 설명하기 위한 블록도이다.
도 13을 참조하면, 본 발명에 따른 플로우 처리 방법을 수행하기 위한 네트워크 장치는, 패킷 입력부(1310), 플로우 테이블 저장부(1320), 플로우 테이블 처리부(1330), 및 패킷 출력부(1340)를 포함하여 구성될 수 있다.
먼저, 패킷 입력부(1310)는 외부로부터 플로우의 패킷을 입력받는 구성요소이다.
다음으로, 플로우 테이블 저장부(1320)는 복수 개(N개; N은 2이상의 자연수)의 플로우 테이블을 저장하는 구성요소이다. 이때, 복수개의 플로우 테이블 중에서 가장 마지막 플로우 테이블은 반드시 지금까지 설명된 출력 테이블(egress table)을 포함하게 된다. 플로우 테이블 저장부(1320)는 다양한 비휘발성 메모리 장치를 이용하여 구현될 수 있다.
다음으로, 플로우 테이블 처리부(1330)는 패킷 입력부(1310)를 통하여 유입된 패킷에 대하여, 상기 플로우 테이블 저장부(1320)에 저장된 플로우 테이블에 기초한 처리를 수행하는 구성요소이다. 이때, 플로우 테이블 처리부(1330)는 패킷 입력부(1310)로부터 입력된 패킷에 대하여, 제1 테이블부터 제N-1번 테이블을 경유한 이후에, 상기 N-1번째 테이블에 의해 지시되는 출력 전용 N번째 테이블(egress table)의 동작을 수행하게 된다.
즉, 상기 N-1번째 테이블을 경유한 이후에, 해당 패킷의 출력 포트(output port)가 지시되면, 상기 지시된 출력 포트에 의해서 상기 N번째 출력 전용 테이블에서 처리될 동작이 결정될 수 있다.
마지막으로, 상기 패킷 출력부(1340)는 플로우 테이블 처리부(1330)로부터 출력된 패킷을 스위치(1300) 외부로 출력하기 위한 구성요소이다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
1300: 네트워크 장치
1310: 패킷 입력부 1320: 플로우 테이블 저장부
1330: 플로우 테이블 처리부 1340: 패킷 출력부

Claims (14)

  1. 파이프라인으로 연결된 복수 개(N개; N은 2이상의 자연수)의 플로우 테이블에서 플로우 처리 방법에 있어서,
    상기 플로우의 유입된 패킷이 상기 복수 개의 테이블 중, 제1 테이블부터 제N-1번 테이블을 경유하는 단계;
    상기 패킷이 상기 N-1번째 테이블을 경유한 이후에, 상기 패킷에 대해 상기 N-1번째 테이블에 의해 지시되는 출력 전용 N번째 테이블(egress table)의 처리를 수행하는 단계; 및
    상기 N번째 테이블의 처리 이후에 상기 패킷을 출력하는 단계를 포함한, 플로우 처리 방법.
  2. 청구항 1에 있어서,
    상기 플로우 처리 방법은 소프트웨어 정의 네트워킹(Software Defined Networking)을 지원하는 네트워크 장비에서 수행되는 것을 특징으로 하는, 플로우 처리 방법.
  3. 청구항 1에 있어서,
    상기 N-1번째 테이블을 경유한 이후에, 해당 플로우의 출력 포트(output port)가 지시되며, 상기 지시된 출력 포트에 의해서 상기 N번째 테이블에서 처리될 동작이 결정되는 것을 특징으로 하는, 플로우 처리 방법.
  4. 청구항 3에 있어서,
    상기 출력 전용 N번째 테이블의 처리는 지시된 출력 포트로 출력될 플로우의 패킷에 대한 가상 로컬 에어리어 네트워크(VLAN; Virtual LAN) 태그(tag)의 부착을 포함하는 것을 특징으로 하는, 플로우 처리 방법.
  5. 청구항 3에 있어서,
    상기 출력 전용 N번째 테이블의 처리는 지시된 출력 포트로 출력될 플로우에 대한 카운팅을 포함하는 것을 특징으로 하는, 플로우 처리 방법.
  6. 청구항 5에 있어서,
    상기 플로우에 대한 카운팅이 소정의 임계값과 동일하거나 초과하는 경우, 출력 포트의 변경을 수행하는 것을 특징으로 하는, 플로우 처리 방법.
  7. 청구항 3에 있어서,
    상기 출력 전용 N번째 테이블의 처리는 지시된 출력 포트로 출력될 플로우의 패킷 사이즈를 소정의 임계값과 비교하여, 상기 패킷 사이즈가 소정의 임계값과 동일하거나 초과하는 경우, 상기 패킷에 대한 분할(fragmentation)을 수행하는 것을 특징으로 하는, 플로우 처리 방법.
  8. 외부로부터 플로우의 패킷을 입력받는 패킷 입력부;
    복수 개(N개; N은 2이상의 자연수)의 플로우 테이블을 저장하는 플로우 테이블 저장부;
    상기 패킷 입력부로부터 입력된 패킷에 대하여, 상기 플로우 테이블 저장부에 저장된 상기 복수 개의 테이블 중, 제1 테이블부터 제N-1번 테이블을 경유한 이후에, 상기 N-1번째 테이블에 의해 지시되는 출력 전용 N번째 테이블(egress table)의 동작을 수행하는 플로우 테이블 처리부; 및
    상기 플로우 테이블 처리부에서 상기 출력 전용 N번째 테이블의 처리를 완료한 이후에 상기 플로우의 패킷을 외부로 출력하는 패킷 출력부를 포함한 네트워크 장치.
  9. 청구항 8에 있어서,
    상기 네트워크 장치는 소프트웨어 정의 네트워킹(Software Defined Networking)을 지원하는 네트워크 장치인, 네트워크 장치.
  10. 청구항 8에 있어서,
    상기 N-1번째 테이블을 경유한 이후에, 해당 패킷의 출력 포트(output port)가 지시되며, 상기 지시된 출력 포트에 의해서 상기 N번째 테이블에서 처리될 동작이 결정되는, 네트워크 장치.
  11. 청구항 10에 있어서,
    상기 출력 전용 N번째 테이블의 처리는 지시된 출력 포트로 출력될 패킷에 대한 가상 로컬 에어리어 네트워크(VLAN; Virtual LAN) 태그(tag)의 부착을 포함하는, 네트워크 장치.
  12. 청구항 10에 있어서,
    상기 출력 전용 N번째 테이블의 처리는 지시된 출력 포트로 출력될 플로우에 대한 카운팅을 포함하는, 네트워크 장치.
  13. 청구항 12에 있어서,
    상기 플로우에 대한 카운팅이 소정의 임계값과 동일하거나 초과하는 경우, 출력 포트의 변경을 수행하는 것을 특징으로 하는, 네트워크 장치.
  14. 청구항 10에 있어서,
    상기 출력 전용 N번째 테이블의 처리는 지시된 출력 포트로 출력될 플로우의 패킷 사이즈를 소정의 임계값과 비교하여, 상기 패킷 사이즈가 소정의 임계값과 동일하거나 초과하는 경우, 상기 패킷에 대한 분할(fragmentation)을 수행하는 것을 특징으로 하는, 네트워크 장치.
KR1020130162390A 2013-08-29 2013-12-24 패킷 출력 제어 방법 및 이를 이용한 네트워크 장치 KR101569588B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US14/914,696 US10103987B2 (en) 2013-08-29 2014-08-28 Packet output controlling method and network device using same
CN201480047512.1A CN105493029B (zh) 2013-08-29 2014-08-28 数据包输出控制方法及使用该方法的网络装置
PCT/KR2014/008030 WO2015030503A1 (ko) 2013-08-29 2014-08-28 패킷 출력 제어 방법 및 이를 이용한 네트워크 장치

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020130103468 2013-08-29
KR20130103468 2013-08-29

Publications (2)

Publication Number Publication Date
KR20150026721A KR20150026721A (ko) 2015-03-11
KR101569588B1 true KR101569588B1 (ko) 2015-11-16

Family

ID=53022590

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130162390A KR101569588B1 (ko) 2013-08-29 2013-12-24 패킷 출력 제어 방법 및 이를 이용한 네트워크 장치

Country Status (3)

Country Link
US (1) US10103987B2 (ko)
KR (1) KR101569588B1 (ko)
CN (1) CN105493029B (ko)

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7366171B2 (en) * 1999-03-17 2008-04-29 Broadcom Corporation Network switch
US6977930B1 (en) 2000-02-14 2005-12-20 Cisco Technology, Inc. Pipelined packet switching and queuing architecture
US7133365B2 (en) * 2001-11-02 2006-11-07 Internap Network Services Corporation System and method to provide routing control of information over networks
US7161904B2 (en) * 2002-06-04 2007-01-09 Fortinet, Inc. System and method for hierarchical metering in a virtual router based network switch
US7340535B1 (en) * 2002-06-04 2008-03-04 Fortinet, Inc. System and method for controlling routing in a virtual router system
SE525800C2 (sv) 2002-10-30 2005-04-26 Packetfront Sweden Ab Anordning och router i ett bredbandsnät som arbetar genom överföring av paketflöden, med ett av en central processorenhet omkopplat mjukvaruflöde och ett hårdvaruomkopplat accelerarat flöde
KR100645537B1 (ko) * 2005-02-07 2006-11-14 삼성전자주식회사 안정적인 패킷 포워딩을 위한 동적인 큐 관리방법 및 이를위한 네트워크 프로세서의 구성요소
US8885634B2 (en) * 2007-11-30 2014-11-11 Ciena Corporation Systems and methods for carrier ethernet using referential tables for forwarding decisions
EP3447979B8 (en) * 2009-11-02 2020-08-05 Marvell Asia Pte, Ltd. Switching system and method based on virtual interfaces
EP2642700A4 (en) * 2010-11-18 2017-09-27 Nec Corporation Closed-path formation forestalling system and closed-path formation forestalling method
US20130064246A1 (en) * 2011-09-12 2013-03-14 Cisco Technology, Inc. Packet Forwarding Using an Approximate Ingress Table and an Exact Egress Table
US8964601B2 (en) * 2011-10-07 2015-02-24 International Business Machines Corporation Network switching domains with a virtualized control plane
US8521905B2 (en) * 2011-12-22 2013-08-27 Telefonaktiebolaget L M Ericsson (Publ) System for flexible and extensible flow processing in software-defined networks
US8971338B2 (en) * 2012-01-09 2015-03-03 Telefonaktiebolaget L M Ericsson (Publ) Expanding network functionalities for openflow based split-architecture networks
JP5967187B2 (ja) * 2012-03-02 2016-08-10 日本電気株式会社 経路制御システム、コントロール装置及び経路制御方法
US20140010096A1 (en) * 2012-07-09 2014-01-09 International Business Machines Corporation Port mirroring in distributed switching systems
US10104004B2 (en) * 2012-11-08 2018-10-16 Texas Instruments Incorporated Openflow match and action pipeline structure
US9143437B1 (en) * 2013-03-15 2015-09-22 Extreme Networks, Inc. Apparatus and method for multicast data packet forwarding

Also Published As

Publication number Publication date
US20160212047A1 (en) 2016-07-21
CN105493029A (zh) 2016-04-13
US10103987B2 (en) 2018-10-16
CN105493029B (zh) 2019-01-01
KR20150026721A (ko) 2015-03-11

Similar Documents

Publication Publication Date Title
Van Tu et al. Towards ONOS-based SDN monitoring using in-band network telemetry
US8427966B2 (en) Programmable passive probe
JP5233504B2 (ja) 経路制御装置およびパケット廃棄方法
US10110517B2 (en) System and method for open vSwitch virtual switch that supports IEEE 802.1p
US9923813B2 (en) Increasing packet processing rate in a network device
EP2947828A1 (en) Communication system, control device, and method for managing network topology
WO2012049960A1 (ja) スイッチシステム、モニタリング集中管理方法
EP2814213A1 (en) Control device, communication system, communication method and program
EP2661025A1 (en) Information system, control device, communication method and program
RU2595888C2 (ru) Узел связи, способ обработки пакетов и программа
EP3110083A1 (en) Communication system, control device, communication control method and program
EP2966813A1 (en) Communication system, switch, control device, packet processing method, and program
US20160182300A1 (en) Selective Configuring of Throttling Engines for Flows of Packet Traffic
US9164771B2 (en) Method for thread reduction in a multi-thread packet processor
EP2744159A1 (en) Packet forwarding system, control device, packet forwarding method and program
EP2858316A1 (en) Packet transfer system, control device, packet transfer method and program
US9083563B2 (en) Method for reducing processing latency in a multi-thread packet processor with at least one re-order queue
KR101569588B1 (ko) 패킷 출력 제어 방법 및 이를 이용한 네트워크 장치
US20170324639A1 (en) Session aware adaptive packet filtering
Nguyen-Ngoc et al. Investigating isolation between virtual networks in case of congestion for a Pronto 3290 switch
US11658911B2 (en) System and method for low latency network switching
JPWO2014010723A1 (ja) スイッチ、通信システム、スイッチ制御方法及びプログラム
TWI788131B (zh) 操作網路交換器之方法、網路交換器及切換結構
WO2015030503A1 (ko) 패킷 출력 제어 방법 및 이를 이용한 네트워크 장치
JP5751077B2 (ja) 信号処理装置および信号処理方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181031

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190903

Year of fee payment: 5