KR100636272B1 - Apparatus for port scheduling and method thereof - Google Patents

Apparatus for port scheduling and method thereof Download PDF

Info

Publication number
KR100636272B1
KR100636272B1 KR1020050002304A KR20050002304A KR100636272B1 KR 100636272 B1 KR100636272 B1 KR 100636272B1 KR 1020050002304 A KR1020050002304 A KR 1020050002304A KR 20050002304 A KR20050002304 A KR 20050002304A KR 100636272 B1 KR100636272 B1 KR 100636272B1
Authority
KR
South Korea
Prior art keywords
port
group
queue
empty
ports
Prior art date
Application number
KR1020050002304A
Other languages
Korean (ko)
Other versions
KR20060081868A (en
Inventor
김봉철
강병창
박용석
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020050002304A priority Critical patent/KR100636272B1/en
Publication of KR20060081868A publication Critical patent/KR20060081868A/en
Application granted granted Critical
Publication of KR100636272B1 publication Critical patent/KR100636272B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6295Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • H04L47/522Dynamic queue service slot or variable bandwidth allocation
    • H04L47/524Queue skipping
    • 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/3036Shared queuing

Landscapes

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

Abstract

본 발명은 라운드 로빈 방식으로 수행되던 포트 스케쥴링 방식을 각 포트들을 그룹화하고 계층 구조를 갖는 벡터 테이블 형태로 관리하여 다수개의 포트를 효율적으로 스케쥴링하고 출력포트 스케쥴링 과정에서 큐잉 지연 및 대기시간을 줄여 패킷 포워딩 성능을 높이기 위한 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 장치 및 그 방법을 제공하기 위한 것으로서, 다수의 포트를 일정한 개수로 묶어 포트들을 그룹화하고, 그룹화 된 포트 내의 일정한 개수의 큐들을 묶어 서브 그룹화한 상태에서, 각 그룹과 그룹내의 포트 그리고 포트 내의 큐의 인큐잉 및 디큐잉에 관한 관리를 수행하는 스케쥴러; 큐의 상태에 대한 이벤트 정보를 계층화하여 저장하는 벡터 테이블; 및 큐의 상태변화 이벤트를 수신하여 벡터 테이블에 저장하는 벡터 테이블 관리부를 포함하여 구성하는 것을 특징으로 한다.The present invention manages the port scheduling method, which was performed in a round robin manner, by grouping each port into a vector table having a hierarchical structure to efficiently schedule a plurality of ports and reduce packet forwarding by reducing queuing delay and waiting time in the output port scheduling process. The present invention provides a port scheduling apparatus using a queue state change event vector table for improving performance and a method thereof, and includes grouping ports by grouping a plurality of ports in a predetermined number and subgrouping a group of a certain number of queues in the grouped ports. In the state, a scheduler for performing management on enqueuing and dequeuing of each group and the ports in the group and the queues in the port; A vector table for layering and storing event information about a state of a queue; And a vector table manager to receive a state change event of a queue and store the same in a vector table.

큐, 천이, 트래지션, 벡터, 스케쥴링Queue, transition, transition, vector, scheduling

Description

포트 스케쥴링 장치 및 그 방법{Apparatus for port scheduling and method thereof}Apparatus for port scheduling and method

도 1은 본 발명이 적용되는 스케쥴러의 내부 구성을 개략적으로 도시한 블록도,1 is a block diagram schematically showing an internal configuration of a scheduler to which the present invention is applied;

도 2는 본 발명의 바람직한 실시예에 따른 다단계 벡터 테이블 구조에 관한 도면,2 is a diagram of a multi-level vector table structure according to a preferred embodiment of the present invention;

도 3은 본 발명의 실시예에 따라 큐 길이 계수부에서 관리되는 큐 길이에 대한 상태가 Empty에서 Non-Empty로 변화시 벡터 테이블 관리부에서 테이블 내용을 업데이트하는 과정을 나타내는 흐름도,3 is a flowchart illustrating a process of updating table contents in a vector table management unit when a state of a queue length managed by a queue length counting unit changes from empty to non-empty according to an embodiment of the present invention;

도 4는 본 발명의 실시예에 따라 큐 길이 계수부에서 관리되는 큐 길이에 대한 상태가 Non-Empty에서 Empty로의 변화시 벡터 테이블 관리부에서 테이블 내용을 업데이트하는 과정을 나타내는 흐름도,4 is a flowchart illustrating a process of updating table contents in a vector table management unit when a state of a queue length managed by a queue length counting unit changes from non-empty to empty according to an embodiment of the present invention;

도 5는 본 발명의 실시예에 따라 그룹/포트 벡터 테이블의 엠프티 벡터와 마스크 벡터를 이용하여 그룹 스케쥴링후 포트 스케쥴링이 수행되는 과정을 나타내는 흐름도,5 is a flowchart illustrating a process of performing port scheduling after group scheduling using an empty vector and a mask vector of a group / port vector table according to an embodiment of the present invention;

도 6은 본 발명의 실시예에 따라 그룹 스케쥴러와 포트 스케쥴러에 의해 스베쥴링된 포트내의 큐를 큐 벡터 테이블을 이용하여 선택하는 과정을 나타내는 흐름도.6 is a flowchart illustrating a process of selecting a queue in a port scheduled by a group scheduler and a port scheduler using a queue vector table according to an embodiment of the present invention.

<도면의 주요 부분에 대한 부호 설명><Description of the symbols for the main parts of the drawings>

100 : 스케쥴러 110 : 큐 길이 계수부100: scheduler 110: queue length counting unit

120 : 벡터 테이블 관리부 130 : 그룹 스케쥴러120: vector table management unit 130: group scheduler

140 : 포트 스케쥴러 150 : 큐 스케쥴러140: port scheduler 150: queue scheduler

200 : 벡터 테이블 210 : 그룹 벡터 테이블200: Vector Table 210: Group Vector Table

220 : 포트 벡터 테이블 230 : 큐 벡터 테이블220: port vector table 230: queue vector table

본 발명은 라우터의 네트워크 프로세서에서 출력 포트의 인큐잉/디큐잉 스케쥴링시 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 장치 및 그 방법에 관한 것이다.The present invention relates to a port scheduling apparatus and a method using a queue state change event vector table when scheduling an output port in the network processor of a router.

일반적으로 라우터 장비는 기능적으로 데이터 플레인(Data Plane), 제어 플레인(Control Plane), 관리 플레인(Management Plane)으로 분류되며, 각 기능은 네트워크 프로세서와 호스트 프로세서에 탑재되어 동작된다.Generally, router devices are functionally classified into data plane, control plane, and management plane, and each function is installed in a network processor and a host processor.

네트워크 프로세서에서 동작하는 데이터 플레인(Data Plane)은 패킷 포워딩 과 같은 많은 양의 패킷을 스위치 파트로 고속으로 포워딩하는 fast path와 컨트롤 패킷와 같이 단순 포워딩보다 더 복잡한 프로세싱을 요구하는 exception packet(기본 헤더 이상의 옵션 헤더가 추가된 패킷, 기본 패킷 사이즈 이상으로 간주되어 분할된 패킷 등)을 호스트 프로세서로 전달하여 처리하도록 하는 slow path로 구성된다.Data planes running on network processors are fast paths that forward large amounts of packets, such as packet forwarding, to the switch part, and exception packets that require more complex processing than simple forwarding, such as control packets. Packet with header added, divided packet that is regarded as more than the basic packet size, etc.) to the host processor for processing.

호스트 프로세서에서 동작하는 제어 플레인(Control Plane), 관리 플레인(Management Plane)은 라우팅 프로토콜 메시지 프로세싱을 통한 라우팅 테이블의 구성 및 운영자에 의한 관리 기능을 담당한다.The control plane and management plane running on the host processor are responsible for the configuration of routing tables through routing protocol message processing and management functions by the operator.

이때, 포트 스케쥴링 알고리즘은 일반적으로 라운드 로빈(Round Robin) 방식으로 구현한다.In this case, the port scheduling algorithm is generally implemented in a round robin method.

종래의 QoS를 지원하는 여러 장비들의 경우, 한 포트 내에서 큐 스케쥴링 방식에 대한 연구는 매우 활발히 진행되어 수많은 스케쥴링 알고리즘들이 진행되어 왔다. 그러나, 포트 스케쥴링 방식은 주로 단순한 라운드 로빈 방식을 이용함에 따라 수백 개 이상 다수개의 포트를 지원해야 하는 시스템에서 소프트웨어적으로 스케쥴링 하기에는 비효율성을 내포하고 있다.In the case of various devices supporting the conventional QoS, the research on the queue scheduling method in one port has been very active, and numerous scheduling algorithms have been conducted. However, the port scheduling scheme mainly uses a simple round robin scheme, which implies inefficiency in software scheduling in a system that needs to support more than a few hundred ports.

특히, 다수개의 출력포트 중 극소수의 포트만이 현재 서비스중일 경우, 리니어(linear)하게 포트를 선택하기 때문에 불필요한 처리 과정을 거치게 되고, 이에 따라 패킷의 전송 지연이 발생하는 문제점이 있다.In particular, if only a few of the plurality of output ports are currently in service, since the port is selected linearly, an unnecessary process is required, and thus there is a problem that a packet transmission delay occurs.

따라서 본 발명은 상기와 같은 문제점들을 해결하기 위한 것으로서, 라운드 로빈 방식으로 수행되던 포트 스케쥴링 방식을 각 포트들을 그룹화하고 계층 구조를 갖는 벡터 테이블 형태로 관리하여 다수개의 포트를 효율적으로 스케쥴링하고 출력포트 스케쥴링 과정에서 큐잉 지연 및 대기시간을 줄여 패킷 포워딩 성능을 높이기 위한 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 장치 및 그 방법을 제공하는데 그 목적이 있다.
Accordingly, the present invention is to solve the above problems, the port scheduling method that was performed in the round robin method to group each port in the form of a vector table having a hierarchical structure to efficiently schedule a plurality of ports and output port scheduling It is an object of the present invention to provide a port scheduling apparatus and a method using a queue state change event vector table for improving packet forwarding performance by reducing queuing delay and waiting time.

이러한 목적을 달성하기 위한 본 발명에 따른 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 장치는, 큐(Queue)의 상태에 대한 이벤트 정보를 계층화하여 저장하는 벡터 테이블; 다수개의 포트를 기 설정된 개수로 묶어 그룹화하고, 상기 그룹화된 각 포트 내의 큐들을 묶어 서브 그룹화하여 계층화한 상태에서 상기 큐에 대한 인큐잉(Enqueuing) 및 디큐잉(Dequeuing)의 스케줄링 관리를 수행하고, 상기 인큐잉 및 디큐잉에 따른 상기 큐의 상태변화에 따라 상기 벡터 테이블을 업데이트하는 스케쥴러를 포함한다.Port scheduling apparatus using the queue state change event vector table according to the present invention for achieving the above object comprises: a vector table for layering and storing event information on the state of the queue (Queue); Grouping and grouping a plurality of ports into a predetermined number, and performing scheduling management of enqueuing and dequeuing of the queues in a hierarchized state by grouping and subgrouping the queues in each of the grouped ports. And a scheduler for updating the vector table according to the state change of the queue according to the enqueuing and dequeuing.

상기의 목적을 달성하기 위한 본 발명에 따른 포트 스케쥴링 방법은, 다수의 포트를 기 설정된 개수로 묶어 그룹화하는 단계; 상기 그룹화된 각 포트 내의 큐들을 묶어 서브 그룹화하는 단계; 상기 큐, 포트 및 그룹의 계층으로 상기 큐의 스케쥴링을 위한 이벤트 정보를 저장하는 벡터 테이블을 구축하는 단계; 상기 큐로 패킷이 인큐잉되면, 상기 벡터 테이블의 이벤트 정보를 기반으로 상기 패킷을 디큐잉하기 위한 스케쥴링을 수행하는 단계; 상기 인큐잉 및 디큐잉에 따른 이벤트 정보가 발생되면, 상기 벡터 테이블을 업데이트하는 단계를 포함한다.Port scheduling method according to the present invention for achieving the above object comprises the steps of grouping a plurality of ports in a predetermined number; Grouping and subgrouping queues in each of the grouped ports; Constructing a vector table for storing event information for scheduling of the queue into a hierarchy of queues, ports and groups; When the packet is enqueued to the queue, performing scheduling to dequeue the packet based on event information of the vector table; And updating the vector table when event information according to the enqueuing and dequeuing is generated.

본 발명의 실시예를 설명하기 전에, 본 발명을 구현하기 위한 기본 개념을 설명하기로 한다.Before describing the embodiments of the present invention, the basic concepts for implementing the present invention will be described.

본 발명은 종래의 포트 스케쥴링 방법이 리니어(leanier)하게 운영됨에 따라 발생되던 네트워크 상의 패킷 처리 지연 현상을 근본적으로 해결하기 위해, 포트 스케쥴링을 효율적으로 할 수 있도록 먼저 포트를 그룹화하여 계층 구조를 가지는 벡터 테이블을 만들고, 이 벡터 테이블을 관리함으로써 수백개 이상되는 포트를 가지는 네트워크에서 각 포트의 패킷을 디큐잉/인큐잉한다.According to the present invention, in order to fundamentally solve the packet processing delay on the network caused by the conventional port scheduling method being leanier, a vector having a hierarchical structure by grouping ports so as to efficiently perform port scheduling Create a table and manage this vector table to dequeue / enqueue packets for each port in a network with more than a hundred ports.

본 발명의 벡터 테이블의 구조는 계층구조를 가지도록 다수개의 출력포트를 32개씩으로 나누어 포트 그룹을 만들고, 각 그룹 별로 32Bit 에 대응되는 Port Empty/Mask Bit 벡터 테이블을 유지 관리하며, 각 그룹 내 32개의 포트 정보를 대표하는 Group Empty/Mask Bit 벡터를 만든다.The structure of the vector table of the present invention creates a port group by dividing a plurality of output ports into 32 so as to have a hierarchical structure, and maintains a Port Empty / Mask Bit vector table corresponding to 32 bits for each group, and 32 in each group. Creates a Group Empty / Mask Bit vector representing the two port information.

또한, 각 포트 내에 존재하는 최대 32개의 Queue Empty/Mask Bit 벡터를 유 지 관리하며, Port Empty/Mask Bit 벡터는 해당 포트 내의 큐 정보를 대표하게 된다.In addition, up to 32 queue empty / mask bit vectors in each port are maintained and the port empty / mask bit vector represents queue information in the corresponding port.

이하, 본 발명이 속하는 분야에 통상의 지식을 지닌자가 본 발명을 용이하게 실시할 수 있도록 본 발명의 바람직한 실시예를 첨부된 도면을 참조하여 상세히 설명한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art may easily implement the present invention.

도 1은 본 발명이 적용되는 스케쥴러의 내부 구성을 개략적으로 도시한 블록도이다.1 is a block diagram schematically showing an internal configuration of a scheduler to which the present invention is applied.

도 1을 참조하면, 본 발명은 큐의 인큐잉 및 디큐잉에 관한 관리를 수행하는 스케쥴러(100)와, 큐 상태에 대한 이벤트 정보를 계층화하여 저장하는 벡터 테이블(200)을 포함한다.Referring to FIG. 1, the present invention includes a scheduler 100 that manages enqueuing and dequeuing of a queue, and a vector table 200 which stores layered event information regarding queue states.

상기 스케쥴러(100)는 패킷을 실제 큐(Queue)에 Enqueuing/Dequeuing을 수행하면서 현재의 큐 길이(Queue Length)를 다이나믹하게 유지 관리하는 큐 길이 계수부(110)와, 큐 길이 계수부(110)로부터 큐 길이에 대한 상태변화 이벤트(Empty->Non-Empty, Non-Empty->Empty)를 수신하여 벡터 테이블(200)을 업데이트하는 벡터 테이블 관리부(120)와, Enqueuing된 패킷의 송신을 위해 그룹화된 포트 그룹을 선택하는 그룹 스케쥴러(130), 그룹 스케쥴러(130)와 각 포트에 주어진 가중치(Weight)에 따라 적당한 포트를 선택하는 포트 스케쥴러(140)와, 포트 스케쥴러(140)와 스케쥴링된 포트 내에서의 큐 선택을 담당하는 큐 스케쥴러(150)를 포함한다.The scheduler 100 performs a queue length counting unit 110 to dynamically maintain a current queue length while enqueuing / dequeuing a packet to an actual queue, and the queue length counting unit 110. A vector table manager 120 for updating the vector table 200 by receiving a state change event (Empty-> Non-Empty, Non-Empty-> Empty) for the queue length from the group, and grouping for transmission of the enqueued packet. A group scheduler 130 for selecting a selected port group, a group scheduler 130, and a port scheduler 140 for selecting an appropriate port according to a weight given to each port, and a port scheduler 140 and a scheduled port. It includes a queue scheduler 150 that is responsible for queue selection in.

각 스케쥴러에서 유지 관리되는 벡터 테이블(200)은 그룹 벡터 테이블(210), 포트 벡터 테이블(220), 큐 벡터 테이블(230)을 포함한다.The vector table 200 maintained in each scheduler includes a group vector table 210, a port vector table 220, and a queue vector table 230.

상기 벡터 테이블(200)은 스케쥴러(100)와 동일 보드에 구성가능하며, 본 발명에서는 기능상의 차이를 강조하기 위해 별도의 테이블 형태로 분리해놓았음을 유의하여야 한다.The vector table 200 can be configured on the same board as the scheduler 100, and it should be noted that in the present invention, the vector table 200 is separated into a separate table form in order to emphasize functional differences.

상기 벡터 테이블 구조 도 2를 참조하여 상세히 설명하기로 한다.The vector table structure will be described in detail with reference to FIG. 2.

도 2는 본 발명의 바람직한 실시예에 따른 다단계 벡터 테이블 구조에 관한 도면이다.2 is a diagram of a multi-level vector table structure according to a preferred embodiment of the present invention.

도 2와 같이 512개의 포트와 각 포트당 16개의 큐를 갖는 네트워크 장비가 있다고 가정하자.Assume that there is a network device having 512 ports and 16 queues for each port as shown in FIG.

이 중 극소수의 큐 만이 집중적으로 서비스중일 때 총 8192 (512포트 x 16큐)개의 큐를 기존의 단순한 라운드 로빈(Round-Robin) 방식으로 스케쥴링 하게되면 패킷이 존재하지 않는 수 많은 큐를 체크해야 하게 되므로 이러한 불필요한 큐 체크 과정으로 인해 실질적으로 서비스를 받아야 하는 큐에서는 디큐잉/인큐잉 대기 시간이 오래 걸리게 된다.If only a few queues are in intensive service, a total of 8192 (512 ports x 16 queues) of queues can be scheduled in a simple round-robin fashion. Therefore, due to this unnecessary queue checking process, dequeuing / enqueuing waiting time is long for queues that need to be serviced.

따라서, 이 같이 실질적으로 패킷이 있는 큐를 서비스하기 위해, 각 큐의 상태에 대한 값을 벡터 테이블 형태로 제공하고, 이 벡터 테이블의 값을 이용하여 패킷을 처리할 큐가 있는 포트인지의 여부를 체크할 수 있도록 한다.Therefore, in order to service such a packet queue, the value of each queue state is provided in the form of a vector table, and the value of the vector table is used to determine whether or not the port where the queue to process packets is located. Check it out.

그리고, 512개의 포트를 32개씩 묶어 16개의 포트 그룹을 생성한다. 이때 각 그룹 ID는 G0∼G15와 같이 설정될 수 있다.Then, 512 ports are grouped by 32 to create 16 port groups. At this time, each group ID may be set as G0 to G15.

그리고 각 그룹 내에는 포트 ID가 P0∼P31과 같이 설정될 수 있다.In each group, the port ID may be set as P0 to P31.

다음으로, 각 그룹 내에 존재하는 32개의 포트에 대응되는 32 bit의 비트 벡터를 이용하여 스케쥴링이 필요한지 여부를 표시하게 된다. 이때 그룹 벡터 테이블 내의 각 Empty Vector는 그룹내 포트들의 Empty Vector를 대표한다.Next, whether or not scheduling is required using a bit vector of 32 bits corresponding to 32 ports existing in each group is indicated. At this time, each Empty Vector in the group vector table represents an Empty Vector of ports in the group.

즉, 그룹 내 포트 중 스케쥴링 대상이 되는 포트가 존재하는지 여부를 비트 벡터를 이용하여 관리한다.That is, whether a port to be scheduled among the ports in the group exists is managed using a bit vector.

각 포트마다 존재하는 16개의 큐에 대한 스케쥴링 여부는 그룹 내 포트 비트 벡터에 의해 대표되며, 최종 각 큐에 대한 스케쥴링 대상 여부는 큐 Empty Vector 자체로 표시된다.The scheduling of 16 queues existing in each port is represented by a port bit vector in the group, and whether or not the scheduling target for each final queue is indicated by the queue Empty Vector itself.

상기와 같이 각 큐를 포트로 묶고, 다시 이 포트를 그룹화함으로써, 큐를 인큐잉/디큐잉할지를 결정함에 있어서, 그룹을 먼저 선택하고, 그룹 내의 포트를 선택한 뒤 포트 내의 큐를 선택하게 된다.By grouping each queue into ports as described above and grouping the ports again, in determining whether to queue or dequeue a queue, a group is first selected, a port in the group is selected, and a queue in the port is then selected.

이하, 상기와 같은 벡터 테이블 구조를 이용한 본 발명의 동작을 설명하기로 한다.Hereinafter, the operation of the present invention using the vector table structure as described above will be described.

도 3은 본 발명의 실시예에 따라 큐 길이 계수부에서 관리되는 큐 길이에 대한 상태가 empty에서 non-empty로 변화시 벡터 테이블 관리부에서 테이블 내용을 업데이트하는 과정을 나타내는 흐름도이다.3 is a flowchart illustrating a process of updating table contents in a vector table management unit when a state of a queue length managed by a queue length counting unit changes from empty to non-empty according to an embodiment of the present invention.

도 3을 참조하면, 먼저 포트 번호와 큐 번호에 대한 변수를 지정한다(S110).Referring to FIG. 3, first, variables for a port number and a queue number are designated (S110).

임의의 큐의 길이가 0 (Empty)에서 1 (Non-Empty)로 상태 변화가 발생되면, 큐, 포트, 그룹 벡터 테이블 순으로 업데이트 해야한다.If the status of any queue is changed from 0 (Empty) to 1 (Non-Empty), it should be updated in the order of queue, port, and group vector table.

상태 변화에 대한 값을 업데이트 하기 위해서는, 현재의 큐 벡터 상태를 체 크하여 모든 큐가 Empty 상태인지를 판단한다(S120).In order to update the value for the state change, the current queue vector state is checked to determine whether all the queues are empty (S120).

S120에서 모든 큐가 Empty가 아니고 단 하나의 큐라도 Non-Empty인 것으로 판단되면, 벡터 테이블을 업데이트 할 필요 없이 이전의 값을 유지하면 된다.If it is determined in S120 that all the queues are not empty and even one queue is non-empty, the previous value may be maintained without having to update the vector table.

따라서, 해당 포트의 해당 큐의 empty 벡터를 set하면 이전과 동일한 값이 된다(S150). 이때 set은 비트 값을 1로 설정함을 의미한다. 따라서, empty 벡터의 비트값이 1이 되면 이는 empty가 아님을 알려줄 수 있다.Therefore, setting the empty vector of the corresponding queue of the corresponding port becomes the same value as before (S150). In this case, set means to set the bit value to 1. Therefore, when the bit value of the empty vector becomes 1, this may indicate that it is not empty.

그러나, S120에서 모든 큐가 Empty 인 것으로 판단되면, 큐 길이가 Empty에서 Non-Empty로 상태 변화가 발생된 것이므로, 그룹 내의 포트 그리고 큐 벡터 테이블의 비트값을 set해야 한다.However, if it is determined in S120 that all the queues are empty, the state change has occurred from empty to non-empty, so the bit values of the ports and the queue vector table in the group must be set.

따라서, 해당 포트의 해당 큐의 empty 벡터를 set하여 해당 포트 해당 큐에 대한 empty 벡터가 empty가 아님을 알려줄 수 있다(S130).Therefore, the empty vector of the corresponding queue of the corresponding port may be set to indicate that the empty vector of the corresponding queue of the corresponding port is not empty (S130).

이후, 포트 및 그룹 벡터 테이블의 값을 업데이트해야 하므로, 그룹 ID와 그룹 내 포트의 엔트리(entry) ID를 구해야한다(S140).Thereafter, since the values of the port and group vector table need to be updated, the group ID and the entry ID of the port in the group must be obtained (S140).

매 32개씩의 포트가 하나의 그룹에 속하게 됨으로 그룹 ID 와 그룹 내 엔트리 엔트리 ID는 아래와 같은 방식으로 얻을 수 있다.Since every 32 ports belong to a group, the group ID and the entry entry ID in the group can be obtained as follows.

- 그룹 ID = 실제 포트 번호/32; Group ID = real port number / 32;

포트번호가 0∼31이면 그룹 ID는 0이 되고, 포트 번호가 32∼63이면 그룹 ID는 1이 되며, 포트 번호가 64∼95이면 그룹 ID는 2가 된다.If the port number is 0 to 31, the group ID is 0. If the port number is 32 to 63, the group ID is 1. If the port number is 64 to 95, the group ID is 2.

- 그룹 내 엔트리 ID = 실제 포트 번호%32;(나머지를 구하는 연산 방식인 모듈로(modulo) 연산을 이용)-Entry ID in group = actual port number% 32; (using modulo operation, which calculates the rest)

포트번호가 0∼31이면 그룹 내 엔트리 ID는 0∼31이 되고, 포트 번호가 32∼63도 그룹 ID는 다르지만 그룹 내 엔트리 ID는 0∼31이 된다.If the port number is 0 to 31, the entry ID in the group is 0 to 31, and the port number is 32 to 63, but the group ID is 0 to 31 although the group ID is different.

그룹 ID와 그룹 내 엔트리 ID를 얻으면, 현재 그룹 내의 모든 포트가 모두 Empty 상태인지를 판단한다(S160).When the group ID and the entry ID in the group are obtained, it is determined whether all ports in the current group are empty (S160).

S160에서 모든 포트가 Empty가 아니고 단 하나의 포트라도 Non-Empty인 것으로 판단되면, 벡터 테이블을 업데이트 할 필요 없이 이전의 값을 유지하면 된다.If it is determined in S160 that all ports are not empty and even one port is non-empty, the previous value may be maintained without having to update the vector table.

따라서, 해당 그룹의 해당 포트의 empty 벡터를 set하면 이전과 동일한 값이 된다(S190). 이때 set은 비트 값을 1로 설정함을 의미한다. 따라서, empty 벡터의 비트값이 1이 되면 이는 empty가 아님을 알려줄 수 있다.Accordingly, when the empty vector of the corresponding port of the corresponding group is set (S190). In this case, set means to set the bit value to 1. Therefore, when the bit value of the empty vector becomes 1, this may indicate that it is not empty.

그러나, S160에서, 모든 포트가 Empty 인 것으로 판단되면, 그룹 벡터 테이블을 업데이트 해야 한다. 따라서, 해당 그룹의 해당 포트의 empty 벡터를 set하여 해당 그룹 해당 포트에 대한 empty 벡터가 empty가 아님을 알려줄 수 있다(S170).However, if it is determined in S160 that all ports are empty, the group vector table must be updated. Therefore, by setting the empty vector of the corresponding port of the group, it can be known that the empty vector for the corresponding port of the group is not empty (S170).

해당 포트에 대한 empty 벡터가 empty가 아니면 이 포트를 포함하는 그룹의 empty 벡터 또한 empty 상태가 아니므로 그룹 벡터 테이블의 empty 벡터를 set해야한다(S180).If the empty vector for the corresponding port is not empty, the empty vector of the group including the port is also not empty, so the empty vector of the group vector table must be set (S180).

도 4는 본 발명의 실시예에 따라 큐 길이 계수부에서 관리되는 큐 길이에 대한 상태가 Non-Empty에서 Empty로의 변화시 벡터 테이블 관리부에서 테이블 내용을 업데이트하는 과정을 나타내는 흐름도이다.4 is a flowchart illustrating a process of updating table contents in a vector table management unit when a state of a queue length managed by a queue length counting unit changes from non-empty to empty according to an embodiment of the present invention.

도 4를 참조하면, 스케쥴링 이후 임의의 큐의 길이가 1(Non-Empty)에서 0 (Empty)으로 상태 변화시 큐, 포트, 그룹 벡터 테이블 순으로 업데이트 해야한다.Referring to FIG. 4, when the length of an arbitrary queue changes from 1 (Non-Empty) to 0 (Empty) after scheduling, the queue, port, and group vector table should be updated in order.

먼저 포트 번호와 큐 번호에 대한 변수를 지정한다(S210).First, variables for the port number and the queue number are specified (S210).

상태 변화에 대한 값을 업데이트 하기 위해서는, 해당 포트의 해당 큐의 Empty 벡터를 클리어(Clear)한다(S220). 즉, 해당 큐가 이후 스케쥴링 대상에서 제외됨을 표시한다.In order to update the value for the state change, the Empty vector of the corresponding queue of the corresponding port is cleared (S220). That is, it indicates that the queue is excluded from future scheduling target.

이후, 모든 큐가 Empty 상태인지를 판단하여(S230), S230에서 모든 큐가 Empty 상태가 아닌 것으로 판단되면 상위 벡터 테이블의 비트 값을 클리어 할 필요가 없으므로 업데이트 과정을 종료한다.Thereafter, it is determined whether all the queues are empty (S230). If it is determined in S230 that all the queues are not empty, the update process is terminated because the bit value of the upper vector table does not need to be cleared.

그러나, S230에서 모든 큐가 Empty 인 것으로 판단되면 그룹 내의 포트 벡터 테이블 업데이트한다.However, if it is determined in S230 that all the queues are empty, the port vector table in the group is updated.

이후, 포트 및 그룹 벡터 테이블의 값을 업데이트해야 하므로, 그룹 ID와 그룹 내 포트의 엔트리(entry) ID를 구해야한다(S240).Thereafter, since the values of the port and group vector table need to be updated, the group ID and the entry ID of the port in the group must be obtained (S240).

매 32개씩의 포트가 하나의 그룹에 속하게 됨으로 그룹 ID 와 그룹 내 엔트리 엔트리 ID는 아래와 같은 방식으로 얻을 수 있다.Since every 32 ports belong to a group, the group ID and the entry entry ID in the group can be obtained as follows.

- 그룹 ID = 실제 포트 번호/32; Group ID = real port number / 32;

포트번호가 0∼31이면 그룹 ID는 0이 되고, 포트 번호가 32∼63이면 그룹 ID는 1이 되며, 포트 번호가 64∼95이면 그룹 ID는 2가 된다.If the port number is 0 to 31, the group ID is 0. If the port number is 32 to 63, the group ID is 1. If the port number is 64 to 95, the group ID is 2.

- 그룹 내 엔트리 ID = 실제 포트 번호%32;(나머지를 구하는 연산 방식인 모듈로(modulo) 연산을 이용)-Entry ID in group = actual port number% 32; (using modulo operation, which calculates the rest)

포트번호가 0∼31이면 그룹 내 엔트리 ID는 0∼31이 되고, 포트 번호가 32∼63도 그룹 ID는 다르지만 그룹 내 엔트리 ID는 0∼31이 된다.If the port number is 0 to 31, the entry ID in the group is 0 to 31, and the port number is 32 to 63, but the group ID is 0 to 31 although the group ID is different.

해당 그룹 내 해당 엔트리 ID의 Empty 벡터 비트를 클리어함으로써 그룹 내에서 이 포트가 이후 스케쥴링 대상에서 제외됨을 표시한다.By clearing the Empty vector bit of the entry ID in the group, it indicates that this port is excluded from future scheduling in the group.

이후, 현재 그룹 내의 모든 포트가 모두 Empty 상태인지를 판단한다(S260).Thereafter, it is determined whether all ports in the current group are empty (S260).

S260에서, 모두 Empty 상태가 아니고 하나의 포트라도 Non-Empty인 경우, 업데이트 과정을 종료한다.In S260, if all of the ports are non-empty and non-empty, the update process is terminated.

그러나, S260에서 모든 포트가 Empty인 것으로 판단되면, 그룹 벡터 테이블을 업데이트하기 위해 그룹 ID에 해당하는 벡터 테이블의 비트값을 클리어한다(S270).However, when it is determined in S260 that all ports are empty, the bit value of the vector table corresponding to the group ID is cleared in order to update the group vector table (S270).

이하, 임의의 포트, 큐가 스케쥴링되는 과정을 설명하기로 한다.Hereinafter, a process of scheduling an arbitrary port or queue will be described.

실제의 스케쥴링 과정은 벡터 테이블의 업데이트 과정과 정반대의 순으로 진행된다.The actual scheduling process is performed in the reverse order of the vector table update process.

즉, 항상 그룹 스케쥴링을 먼저하고, 이후 그룹 내에서의 포트 스케쥴링 그리고 나서 포트 내의 큐 스케쥴링 과정을 수행한다.That is, group scheduling is always performed first, then port scheduling in the group, and then queue scheduling in the port is performed.

도 5는 본 발명의 실시예에 따라 그룹/포트 벡터 테이블의 엠프티 벡터와 마스크 벡터를 이용하여 그룹 스케쥴링 후 포트 스케쥴링이 수행되는 과정을 나타내는 흐름도이다.5 is a flowchart illustrating a process of performing port scheduling after group scheduling using an empty vector and a mask vector of a group / port vector table according to an embodiment of the present invention.

도 5를 참조하면, 그룹 ID에 대한 empty 벡터의 비트값을 판단하여(S310), empty 벡터의 비트값이면 '0'이면 현재 시스템 내의 어떤 포트의 어떤 큐에도 패킷이 존재하지 않는 경우이기 때문에, 스케쥴링 과정을 수행할 필요가 없다. 따라서 이후의 과정은 종료된다.Referring to FIG. 5, the bit value of the empty vector for the group ID is determined (S310). If the bit value of the empty vector is '0', the packet is not present in any queue of any port in the current system. There is no need to perform the scheduling process. Therefore, the subsequent process is terminated.

S310에서 empty 벡터의 비트값이 '1'이면, 그룹 벡터 테이블 내의 Empty 벡터와 Mask 벡터를 이용하여 스케쥴링 될 그룹 ID를 구한다(S320).If the bit value of the empty vector is '1' in S310, a group ID to be scheduled is calculated using an empty vector and a mask vector in the group vector table (S320).

이후, 마스크 벡터를 쉬프트(Shift)하여 다음 라운드에서의 스케쥴링 될 그룹을 지정한다(S330,S340). 선택된 그룹 ID를 이용하여 그룹 내에서 스케쥴링 가능한 엔트리 ID를 구하고(S350), 다음 라운드에서 스케쥴링될 엔트리를 지정하기 위해 마스크 벡터 Mask Vector를 업데이트한다(S360,S370).Thereafter, the mask vector is shifted to specify a group to be scheduled in the next round (S330 and S340). A schedule ID that can be scheduled in the group is obtained using the selected group ID (S350), and the mask vector Mask Vector is updated to specify an entry to be scheduled in the next round (S360, S370).

스케쥴링 될 그룹 ID와 그룹 내의 엔트리 ID를 바탕으로 아래와 같은 연산을 통해 실제 스케쥴링 될 포트 번호를 계산한다(S380).Based on the group ID to be scheduled and the entry ID in the group, the port number to be actually scheduled is calculated through the following operation (S380).

포트 번호 = (Group ID << 5) + Group내의 Entry IDPort number = (Group ID << 5) + Entry ID in Group

상기 << 비트연산자는 비트를 왼쪽으로 쉬프트하는 연산자이다.The << bitwise operator is an operator that shifts a bit to the left.

따라서, 그룹 ID의 각 비트를 5자리씩 왼쪽으로 쉬프트한다.Therefore, each bit of the group ID is shifted left by five digits.

이런식으로 각 그룹의 ID를 지정한 다음 각 그룹내의 엔트리 ID를 가산하면 각 포트 번호가 얻어진다.In this way, by specifying the ID of each group and then adding the entry IDs in each group, each port number is obtained.

상기의 과정을 통해 얻어진 실제 포트 번호를 큐 벡터 테이블의 오프셋(Offset)으로 사용하여 큐 Empty 벡터와 마스크 벡터를 구한다.The queue empty vector and the mask vector are obtained by using the actual port number obtained through the above process as an offset of the queue vector table.

도 6은 본 발명의 실시예에 따라 그룹 스케쥴러와 포트 스케쥴러에 의해 스베쥴링된 포트내의 큐를 큐 벡터 테이블을 이용하여 선택하는 과정을 나타내는 흐름도이다.6 is a flowchart illustrating a process of selecting a queue in a port scheduled by a group scheduler and a port scheduler using a queue vector table according to an embodiment of the present invention.

도 6을 참조하면, 포트 ID가 유효한지를 판단하여(S410), 유효한 번호가 아니면 이후의 과정을 종료한다.Referring to FIG. 6, it is determined whether the port ID is valid (S410), and if it is not a valid number, the subsequent process is terminated.

S410에서 포트 ID가 유효하면, 포트 내에서 스케쥴링 가능한 큐 ID를 구한 후(S420), 다음 라운드에서 스케쥴링될 엔트리를 지정하기 위해 마스크 벡터를 업데이트한다(S430).If the port ID is valid in S410, after obtaining a queue ID that can be scheduled in the port (S420), the mask vector is updated to designate an entry to be scheduled in the next round (S430).

최종 스케쥴링된 큐 번호는 아래의 연산을 통해 구한다(S440).The final scheduled queue number is obtained through the following operation (S440).

큐 번호 = (포트 번호 << 4) + 포트 내의 큐 ID;Queue number = (port number << 4) + queue ID in the port;

상기 수식은 포트 번호 구하는 방식과 동일하다.The above formula is the same as the method of obtaining the port number.

이상 본 발명의 바람직한 실시예에 대해 상세히 기술되었지만, 본 발명은 라우터 장비내에서의 스케쥴링 방식은 예시의 목적을 위해 개시된 것이며, 일반적인 스케쥴링 방식인 RR/DRR(round robin/deficit round robin)이나 주요 트래픽에 가중치를 주는 WRR(weight round robin) 등을 지원하는 다양한 분야에 응용 가능하고, 본 발명의 범위안에서 다양한 수정, 변경 및 부가 등이 가능할 것이다. 따라서 본 발명의 앞으로의 실시예들의 변경은 본 발명의 기술을 벗어날 수 없을 것이다.Although the above has been described in detail with respect to the preferred embodiment of the present invention, the present invention is a scheduling scheme in the router equipment for the purpose of illustration, the general scheduling scheme RR / DRR (round robin / deficit round robin) or the main traffic It is applicable to various fields that support weight round robin (WRR) and the like, and various modifications, changes, and additions are possible within the scope of the present invention. Therefore, changes in the future embodiments of the present invention will not be able to escape the technology of the present invention.

이상 설명한 바와 같이, 본 발명은 수백 개 이상 다수개의 포트를 일정 갯수씩 나누어 그룹화하고, 포트 내의 큐들을 일정 갯수로 묶어 서브 그룹화하는 방식의 계층구조를 갖는 벡터 테이블을 제공하고, 이러한 벡터 테이블을 이용하여 실시간으로 제공되는 큐의 패킷 유무 상태에 따라 인큐잉/디큐잉 스케쥴링을 결정하므로, 기존의 라운드 로빈 방식 보다 효율적인 스케쥴링을 기대할 수 있다.As described above, the present invention provides a vector table having a hierarchical structure in which a group of hundreds or more ports are divided by a predetermined number and grouped, and the queues in the ports are grouped and subgrouped by a predetermined number. By determining enqueuing / dequeuing scheduling according to the presence or absence of packets in the queue provided in real time, more efficient scheduling can be expected than the conventional round robin method.

또한, 패킷이 없는 포트는 스킵할 수 있어 패킷이 없는 포트를 Read 할 필요 할 없어 큐잉 지연 및 대기 지연 현상을 감소시키는 효과가 있다.In addition, since the packetless port can be skipped, there is no need to read the packetless port, thereby reducing the queuing delay and waiting delay.

Claims (22)

포트 스케쥴링 장치에 있어서,In the port scheduling apparatus, 큐(Queue)의 상태에 대한 이벤트 정보를 계층화하여 저장하는 벡터 테이블; 과A vector table for layering and storing event information about a state of a queue; and 다수개의 포트를 기 설정된 개수로 묶어 그룹화하고, 상기 그룹화된 각 포트 내의 큐들을 묶어 서브 그룹화하여 계층화한 상태에서 상기 큐에 대한 인큐잉(Enqueuing) 및 디큐잉(Dequeuing)의 스케줄링 관리를 수행하고, 상기 인큐잉 및 디큐잉에 따른 상기 큐의 상태변화에 따라 상기 벡터 테이블을 업데이트하는 스케쥴러를 포함하는 포트 스케쥴링 장치.Grouping and grouping a plurality of ports into a predetermined number, and performing scheduling management of enqueuing and dequeuing of the queues in a hierarchized state by grouping and subgrouping the queues in each of the grouped ports. And a scheduler for updating the vector table according to a state change of the queue according to the enqueuing and dequeuing. 제 1항에 있어서, 상기 스케쥴러는,The method of claim 1, wherein the scheduler, 패킷을 실제 큐에 인큐잉 및 디큐잉하면서 현재의 큐 길이(Queue Length)를 다이나믹하게 유지 관리하는 큐 길이 계수부;A queue length counting unit for dynamically maintaining a current queue length while enqueuing and dequeuing a packet to an actual queue; 상기 큐 길이 계수부에서 상기 큐 길이에 대한 상태변화 이벤트가 발생되면, 상기 벡터 테이블을 업데이트하는 벡터 테이블 관리부;A vector table manager for updating the vector table when a state change event for the queue length is generated in the queue length counting unit; 인큐잉된 패킷의 송신을 위해 상기 각 그룹에 대한 벡터 테이블을 이용하여 스케쥴링될 그룹을 선택하는 그룹 스케쥴러;A group scheduler for selecting a group to be scheduled using the vector table for each group for transmission of enqueued packets; 상기 선택된 그룹 내의 각 포트에 대한 벡터 테이블을 이용하여 스케쥴링될 포트를 선택하는 포트 스케쥴러; 및A port scheduler for selecting a port to be scheduled using a vector table for each port in the selected group; And 상기 선택된 포트 내의 각 큐에 대한 벡터 테이블을 이용하여 스케쥴링될 큐를 선택하는 큐 스케쥴러를 포함하는 것을 특징으로 하는 포트 스케쥴링 장치.And a queue scheduler for selecting a queue to be scheduled using a vector table for each queue in the selected port. 제 1항에 있어서, 상기 벡터 테이블은,The method of claim 1, wherein the vector table, 상기 그룹에 대한 상태 변화 이벤트 정보를 저장하는 그룹 벡터 테이블;A group vector table for storing state change event information for the group; 상기 포트에 대한 상태 변화 이벤트 정보를 저장하는 포트 벡터 테이블; 및A port vector table that stores state change event information for the port; And 상기 큐에 대한 상태 변화 이벤트 정보를 저장하는 큐 벡터 테이블을 포함하는 것을 특징으로 하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 장치.And a queue vector table configured to store state change event information of the queue. 제 1항에 있어서, 상기 벡터 테이블은,The method of claim 1, wherein the vector table, 상기 그룹화된 각 그룹 내에 존재하는 다수개의 포트에 대응되는 비트 벡터를 이용하여, 상기 각 그룹에 대한 스케쥴링 필요 여부를 표시하는 것을 특징으로 하는 포트 스케쥴링 장치.And using the bit vectors corresponding to the plurality of ports present in each grouped group, indicating whether or not scheduling is necessary for each group. 제 4항에 있어서, 상기 벡터 테이블은,The method of claim 4, wherein the vector table, 상기 그룹화된 각 그룹에 대한 Empty 벡터가 상기 그룹내 포트들의 Empty 벡터를 대표하도록 하는 것을 특징으로 하는 포트 스케쥴링 장치.And an empty vector for each grouped group to represent an empty vector of ports in the group. 제 5항에 있어서, 상기 벡터 테이블은,The method of claim 5, wherein the vector table, 상기 그룹 내의 다수개의 포트 중 스케쥴링 대상이 되는 포트의 존재 여부를 비트 벡터를 이용하여 관리하는 것을 특징으로 하는 포트 스케쥴링 장치.Port scheduling apparatus, characterized in that for managing the presence or absence of a port to be scheduled among the plurality of ports in the group using a bit vector. 제 6항에 있어서, 상기 벡터 테이블은,The method of claim 6, wherein the vector table, 상기 각 포트 내에 존재하는 다수개의 큐에 대한 스케쥴링 여부가 상기 그룹 내 포트 비트 벡터에 의해 대표되도록 하는 것을 특징으로 하는 포트 스케쥴링 장치.And scheduling the plurality of queues existing in each of the ports by a port bit vector in the group. 제 7항에 있어서, 상기 벡터 테이블은,The method of claim 7, wherein the vector table, 상기 각 포트 내에 존재하는 각 큐에 대한 스케쥴링 대상 여부가 큐 Empty 벡터 자체로 표시되도록 하는 것을 특징으로 하는 포트 스케쥴링 장치.Port scheduling apparatus characterized in that the scheduling target for each queue existing in each port is indicated by the queue Empty vector itself. 포트 스케쥴링 방법에 있어서,In the port scheduling method, 다수개의 포트를 기 설정된 개수로 묶어 그룹화하고, 상기 그룹화된 각 포트 내의 큐들을 묶어 서브 그룹화하여, 큐, 포트 및 그룹의 계층으로 상기 큐 상태에 대한 이벤트 정보를 저장하는 벡터 테이블을 구축하는 단계; Grouping a plurality of ports into a predetermined number, grouping and subgrouping the queues in each of the grouped ports, and constructing a vector table for storing event information on the queue state in a hierarchy of queues, ports, and groups; 임의의 큐 길이가 Empty에서 Non-Empty로 상태 변화되면, 상기 큐가 포함된 포트 내의 모든 큐 벡터 상태를 체크하여, 상기 모든 큐가 Empty 상태인지를 판단하는 단계;If any queue length changes from Empty to Non-Empty, checking all queue vector states in the port containing the queue to determine whether all queues are empty; 상기 모든 큐가 Empty 상태로 판단되면, 상기 포트 및 상기 큐 벡터 테이블의 비트값을 세트(set)하는 단계;Setting bit values of the port and the queue vector table if all the queues are determined to be empty; 상기 포트가 포함된 그룹 ID 및 상기 그룹 내 포트의 엔트리(entry) ID를 획득하여, 상기 그룹 내의 모든 포트가 Empty 상태인지를 판단하는 단계; 및Determining whether all ports in the group are empty by obtaining a group ID including the port and an entry ID of the ports in the group; And 상기 모든 포트가 Empty 상태로 판단되면, 상기 그룹 내 모든 포트의 Empty 벡터와 상기 그룹에 대한 Empty 벡터를 세트하는 단계를 포함하는 포트 스케쥴링 방법.And when all ports are determined to be empty, setting an empty vector of all ports in the group and an empty vector for the group. 제 9항에 있어서, The method of claim 9, 상기 모든 큐 중 적어도 하나가 Non-Empty 상태로 판단되면, 상기 벡터 테이블을 이전 값으로 유지하는 단계를 더 포함하는 포트 스케쥴링 방법.If at least one of the queues is determined to be in a non-empty state, maintaining the vector table at a previous value. 제 10항에 있어서, 상기 벡터 테이블을 이전 값으로 유지하는 단계는,The method of claim 10, wherein maintaining the vector table at a previous value comprises: 상기 큐 길이가 변화된 큐의 Empty 벡터만을 세트하는 것을 특징으로 하는 포트 스케쥴링 방법.And setting only an empty vector of the queue of which the queue length is changed. 제 9항에 있어서, 상기 그룹 ID 및 상기 그룹 내 포트의 엔트리 ID를 획득하는 단계는,The method of claim 9, wherein obtaining the group ID and the entry ID of the port in the group comprises: 실제 포트 번호를 피제수로 두고, 각 그룹 내의 포트 수를 제수로 하여 계산된 몫을 상기 그룹 ID로 획득하고, 그 나머지값을 상기 그룹 내 포트의 엔트리 ID로 획득하는 것을 특징으로 하는 포트 스케쥴링 방법.And a share calculated by dividing the actual port number as a dividend, dividing the number of ports in each group by the group ID, and obtaining the remaining value as the entry ID of the port in the group. 제 9항에 있어서, The method of claim 9, 상기 그룹 내 모든 포트 중 적어도 하나가 Non-Empty 상태로 판단되면, 상기 그룹 벡터 테이블을 이전 값으로 유지하는 단계를 더 포함하는 포트 스케쥴링 방법.And if it is determined that at least one of all ports in the group is in a non-empty state, maintaining the group vector table at a previous value. 포트 스케쥴링 방법에 있어서,In the port scheduling method, 다수개의 포트를 기 설정된 개수로 묶어 그룹화하고, 상기 그룹화된 각 포트 내의 큐들을 묶어 서브 그룹화하여, 큐, 포트 및 그룹의 계층으로 상기 큐 상태에 대한 이벤트 정보를 저장하는 벡터 테이블을 구축하는 단계; Grouping a plurality of ports into a predetermined number, grouping and subgrouping the queues in each of the grouped ports, and constructing a vector table for storing event information on the queue state in a hierarchy of queues, ports, and groups; 임의의 큐의 길이가 Non-Empty에서 Empty로 상태 변화되면, 상기 큐의 Empty 벡터를 클리어하고, 상기 큐가 포함된 포트의 모든 큐가 Empty 상태인지를 판단하는 단계;If the length of any queue changes from non-empty to empty, clearing the empty vector of the queue and determining whether all queues of the port including the queue are empty; 상기 모든 큐가 Empty 상태로 판단되면, 상기 큐가 포함된 포트의 벡터 테이블 업데이트하는 단계;If it is determined that all the queues are empty, updating a vector table of ports including the queue; 상기 포트가 포함된 그룹 ID 및 상기 그룹 내 포트들의 엔트리 ID를 획득하여, 상기 큐가 포함된 포트 엔트리 ID의 Empty 벡터 비트를 클리어하고, 상기 그룹 내 모든 포트가 Empty 상태인지를 판단하는 단계; 및Acquiring a group ID including the port and an entry ID of ports in the group, clearing an empty vector bit of the port entry ID including the queue, and determining whether all ports in the group are empty; And 상기 모든 포트가 Empty 상태로 판단되면, 상기 그룹 ID에 해당하는 벡터 테이블의 비트값을 클리어하는 단계를 포함하는 포트 스케쥴링 방법.And when all ports are determined to be empty, clearing a bit value of a vector table corresponding to the group ID. 제 14항에 있어서, The method of claim 14, 상기 모든 큐 중 적어도 하나가 Non-Empty 상태로 판단되면, 상위 업데이트 과정을 종료하는 단계를 더 포함하는 포트 스케쥴링 방법.If at least one of all the queues is determined to be in a non-empty state, terminating a higher update process. 제 14항에 있어서, The method of claim 14, 상기 모든 포트 중 적어도 하나가 Non-Empty 상태로 판단되면, 상기 업데이트 과정을 종료하는 단계를 더 포함하는 포트 스케쥴링 방법.And if the at least one of all the ports is determined to be in a non-empty state, ending the update process. 포트 스케쥴링 방법에 있어서,In the port scheduling method, 다수의 포트를 기 설정된 개수로 묶어 그룹화하는 단계;Grouping a plurality of ports into a preset number; 상기 그룹화된 각 포트 내의 큐들을 묶어 서브 그룹화하는 단계;Grouping and subgrouping queues in each of the grouped ports; 상기 큐, 포트 및 그룹의 계층으로 상기 큐의 스케쥴링을 위한 이벤트 정보를 저장하는 벡터 테이블을 구축하는 단계;Constructing a vector table for storing event information for scheduling of the queue into a hierarchy of queues, ports and groups; 상기 큐로 패킷이 인큐잉되면, 상기 벡터 테이블의 이벤트 정보를 기반으로 상기 패킷을 디큐잉하기 위한 스케쥴링을 수행하는 단계; 및When the packet is enqueued to the queue, performing scheduling to dequeue the packet based on event information of the vector table; And 상기 인큐잉 및 디큐잉에 따른 이벤트 정보가 발생되면, 상기 벡터 테이블을 업데이트하는 단계를 포함하는 포트 스케쥴링 방법.And updating the vector table when event information according to the enqueuing and dequeuing is generated. 포트 스케쥴링 장치에 있어서,In the port scheduling apparatus, 큐, 포트 및 그룹으로 계층화으로 큐의 상태에 대한 이벤트 정보를 저장하는 벡터 테이블; 과A vector table for storing event information about the state of the queue, layered into queues, ports and groups; and 임의의 큐 길이가 Empty에서 Non-Empty로 상태 변화되면, 상기 큐가 포함된 포트 내의 모든 큐 벡터 상태를 체크하고, 상기 체크된 모든 큐가 Empty인 경우, 상기 큐 및 상기 큐가 포함된 포트의 벡터 테이블 비트값을 세트하며, 상기 체크된 모든 큐 중 적어도 하나가 Non-Empty인 경우, 상기 큐가 포함된 포트 및 그룹 벡터 테이블의 비트값을 이전 값으로 유지하는 스케쥴러를 포함하는 포트 스케쥴링 장치.If any queue length changes from Empty to Non-Empty, check the status of all queue vectors in the port that contains the queue, and if all of the checked queues are empty, the queue and the port of the queue that contains the queue are checked. And a scheduler that sets a vector table bit value and maintains the bit value of the port and the group vector table in which the queue is included as a previous value when at least one of all the checked queues is non-empty. 제18항에 있어서, 상기 스케쥴러는, The method of claim 18, wherein the scheduler, 상기 모든 큐가 Empty인 경우, 상기 큐 및 상기 포트의 벡터 테이블 비트값을 세트하면, 상기 포트가 포함된 그룹의 ID 및 그룹 내 포트의 엔트리(entry) ID를 획득하여 상기 그룹 내의 모든 포트 상태를 파악하고, 상기 파악된 모든 포트가 Empty인 경우, 상기 그룹 내 모든 포트의 Empty 벡터와 상기 그룹에 대한 Empty 벡터를 세트하고, 상기 파악된 모든 포트 중 적어도 하나가 Non-Empty인 경우, 상기 벡터 테이블을 이전 값으로 유지하는 포트 스케쥴링 장치.When all the queues are empty, when the vector table bit values of the queue and the port are set, the ID of the group including the port and the entry ID of the port in the group are obtained to obtain the status of all ports in the group. Determine, if all the identified ports are empty, set an Empty vector of all ports in the group and an Empty vector for the group, and if at least one of all the identified ports is Non-Empty, the vector table The port scheduling device that keeps the old value. 제19항에 있어서, 상기 스케쥴러는,The scheduler of claim 19, wherein the scheduler comprises: 실제 포트 번호를 피제수로 두고, 각 그룹 내의 포트 수를 제수로 하여 계산된 몫을 상기 그룹 ID로 획득하고, 그 나머지값을 상기 그룹 내 포트의 엔트리 ID로 획득하는 것을 특징으로 하는 포트 스케쥴링 방법.And a share calculated by dividing the actual port number as a dividend, dividing the number of ports in each group by the group ID, and obtaining the remaining value as the entry ID of the port in the group. 포트 스케쥴링 장치에 있어서,In the port scheduling apparatus, 큐, 포트 및 그룹으로 계층화으로 큐의 상태에 대한 이벤트 정보를 저장하는 벡터 테이블; 과A vector table for storing event information about the state of the queue, layered into queues, ports and groups; and 임의의 큐 길이가 Non-Empty에서 Empty로 상태 변화되면, 상기 큐 벡터를 클리어한 후 상기 큐가 포함된 포트 내의 모든 큐 벡터 상태를 체크하고, 상기 체크된 모든 큐가 Empty인 경우, 상기 포트 및 상기 포트가 포함된 그룹의 벡터 테이블을 업데이트하고, 상기 체크된 모든 큐 중 적어도 하나가 Non-Empty인 경우, 상기 큐, 포트 및 그룹 벡터 테이블의 비트값을 이전 값으로 유지하는 스케쥴러를 포함하는 포트 스케쥴링 장치.If any queue length is changed from Non-Empty to Empty, the queue vector is cleared and then all queue vector states in the port containing the queue are checked, and if the checked queues are Empty, the port and A port including a scheduler for updating a vector table of a group including the port and maintaining bit values of the queue, port, and group vector table to a previous value when at least one of all checked queues is non-empty. Scheduling Device. 제21항에 있어서, 상기 스케쥴러는, The scheduler of claim 21, wherein the scheduler comprises: 상기 모든 큐가 Empty인 경우, 상기 큐가 포함된 포트의 벡터를 클리어한 후, 상기 포트가 포함된 그룹의 ID 및 그룹 내 포트의 엔트리 ID를 획득하여 상기 그룹 내의 모든 포트 상태를 파악하고, 상기 파악된 모든 포트가 Empty인 경우, 상기 그룹 ID에 해당하는 벡터 테이블의 비트값을 클리어하며, 상기 파악된 모든 포트 중 적어도 하나가 Non-Empty인 경우, 상기 벡터 테이블을 이전 값으로 유지하는 포트 스케쥴링 장치.If all the queues are empty, after clearing the vector of the port containing the queue, obtain the ID of the group containing the port and the entry ID of the port in the group to determine the state of all the ports in the group, If all identified ports are empty, the bit value of the vector table corresponding to the group ID is cleared, and if at least one of all the identified ports is non-empty, port scheduling for maintaining the vector table at a previous value Device.
KR1020050002304A 2005-01-10 2005-01-10 Apparatus for port scheduling and method thereof KR100636272B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050002304A KR100636272B1 (en) 2005-01-10 2005-01-10 Apparatus for port scheduling and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050002304A KR100636272B1 (en) 2005-01-10 2005-01-10 Apparatus for port scheduling and method thereof

Publications (2)

Publication Number Publication Date
KR20060081868A KR20060081868A (en) 2006-07-13
KR100636272B1 true KR100636272B1 (en) 2006-10-19

Family

ID=37172725

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050002304A KR100636272B1 (en) 2005-01-10 2005-01-10 Apparatus for port scheduling and method thereof

Country Status (1)

Country Link
KR (1) KR100636272B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799913B2 (en) 2010-01-07 2014-08-05 Samsung Electronics Co., Ltd Computing system, method and computer-readable medium for managing a processing of tasks

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102291987B1 (en) 2019-10-29 2021-08-20 고려대학교 산학협력단 Method for managing multiple queues in switch ports, recording medium and device for performing the method

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1051471A (en) 1996-04-05 1998-02-20 Fore Syst Inc Digital network with mechanism putting together virtual message transfer paths having close transfer service rates to improve efficiency of transfer scheduling onto virtual message transfer path
JP2002057704A (en) 2000-08-09 2002-02-22 Nippon Telegr & Teleph Corp <Ntt> Packet transfer method
JP2002223223A (en) 2000-11-24 2002-08-09 Matsushita Electric Ind Co Ltd Flow control device and flow control method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1051471A (en) 1996-04-05 1998-02-20 Fore Syst Inc Digital network with mechanism putting together virtual message transfer paths having close transfer service rates to improve efficiency of transfer scheduling onto virtual message transfer path
JP2002057704A (en) 2000-08-09 2002-02-22 Nippon Telegr & Teleph Corp <Ntt> Packet transfer method
JP2002223223A (en) 2000-11-24 2002-08-09 Matsushita Electric Ind Co Ltd Flow control device and flow control method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799913B2 (en) 2010-01-07 2014-08-05 Samsung Electronics Co., Ltd Computing system, method and computer-readable medium for managing a processing of tasks

Also Published As

Publication number Publication date
KR20060081868A (en) 2006-07-13

Similar Documents

Publication Publication Date Title
CN107959636B (en) Method and device for sending BGP (Border gateway protocol) message
JP4879382B2 (en) Packet switch, scheduling device, discard control circuit, multicast control circuit, and QoS control device
US7848341B2 (en) Switching arrangement and method with separated output buffers
JP3871327B2 (en) Optimized scalable network switch
US8000247B2 (en) Bandwidth management apparatus
US8078763B1 (en) Dequeuing and congestion control systems and methods for single stream multicast
US7860009B2 (en) Providing backpressure flow control to specific traffic flows
WO2006091175A1 (en) Method and apparatus for buffer management in shared memory packet processors
CN101729402A (en) Flow consistent dynamic load balancing
EP2187580B1 (en) Method for scheduling packets of a plurality of flows and system for carrying out the method
US7580355B2 (en) Method of performing weighted round-robin queue scheduling using a dynamic link list and structure for implementing same
CN113890860B (en) Method, apparatus, and medium for supporting latency-limited data exchange
EP2740245B1 (en) A scalable packet scheduling policy for vast number of sessions
US8189578B2 (en) Simple fairness protocols for daisy chain interconnects
JP6569374B2 (en) Switch device and control method of switch device
CN101651615A (en) Method and device for scheduling messages
US7289443B1 (en) Slow-start packet scheduling particularly applicable to systems including a non-blocking switching fabric and homogeneous or heterogeneous line card interfaces
US7342936B2 (en) Method of performing deficit round-robin scheduling and structure for implementing same
US7684422B1 (en) Systems and methods for congestion control using random early drop at head of buffer
US6445706B1 (en) Method and device in telecommunications system
CA2399186C (en) Data transfer apparatus and data transfer method
JP4164771B2 (en) Load balance type switch device and load balance type switch method
KR100636272B1 (en) Apparatus for port scheduling and method thereof
Hu et al. Per-flow queueing by dynamic queue sharing
JP2000083055A (en) Router

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
LAPS Lapse due to unpaid annual fee