KR20060081868A - Apparatus for port scheduling using queue transition event vector table and method thereof - Google Patents

Apparatus for port scheduling using queue transition event vector table and method thereof Download PDF

Info

Publication number
KR20060081868A
KR20060081868A KR1020050002304A KR20050002304A KR20060081868A KR 20060081868 A KR20060081868 A KR 20060081868A KR 1020050002304 A KR1020050002304 A KR 1020050002304A KR 20050002304 A KR20050002304 A KR 20050002304A KR 20060081868 A KR20060081868 A KR 20060081868A
Authority
KR
South Korea
Prior art keywords
group
port
empty
queue
vector table
Prior art date
Application number
KR1020050002304A
Other languages
Korean (ko)
Other versions
KR100636272B1 (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 using queue transition event vector table and method thereof} Apparatus for port scheduling using queue transition event vector table 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.

이러한 목적을 달성하기 위한 본 발명에 따른 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 장치는, 포트 스케쥴링 장치에 있어서, 다수의 포트를 일정한 개수로 묶어 포트들을 그룹화하고, 그룹화 된 포트 내의 일정한 개수의 큐들을 묶어 서브 그룹화한 상태에서, 각 그룹과 그룹내의 포트 그리고 포트 내의 큐의 인큐잉 및 디큐잉에 관한 관리를 수행하는 스케쥴러; 큐의 상태에 대한 이벤트 정보를 계층화하여 저장하는 벡터 테이블; 및 큐의 상태변화 이벤트를 수신하여 벡터 테이블에 저장하는 벡터 테이블 관리부를 포함한다.A port scheduling apparatus using a queue state change event vector table according to the present invention for achieving the above object, in the port scheduling apparatus, a plurality of ports are grouped into a predetermined number to group ports, and a predetermined number of queues in the grouped ports. A scheduler for performing management on enqueuing and dequeuing of each group, a port in the group, and a queue in the port in a grouped and sub-grouped state; 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.

상기의 목적을 달성하기 위한 본 발명에 따른 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 방법은, 큐 길이 계수부에서 관리되는 큐 길이에 대한 상태가 empty에서 non-empty로 변화시 벡터 테이블 관리부에서 테이블 내용을 업데이트하는 방법에 있어서, 임의의 큐의 길이가 0 (Empty)에서 1 (Non-Empty)로 상태 변화가 발생되면, 상태 변화에 대한 값을 업데이트 하기 위해서, 현재의 큐 벡터 상태를 체크하여 모든 큐가 Empty 상태인지를 판단하는 단계; 모든 큐가 Empty 인 것으로 판단되면, 큐 길이가 Empty에서 Non-Empty로 상태 변화가 발생된 것이므로, 그룹 내의 포트 그리고 큐 벡터 테이블의 비트값을 set하는 단계; 포트 및 그룹 벡터 테이블의 값을 업데이트해야 하므로, 그룹 ID와 그룹 내 포트의 엔트리(entry) ID를 얻는 단계; 그룹 ID와 그룹 내 엔트리 ID를 얻으면, 현재 그룹 내의 모든 포트가 모두 Empty 상태인지를 판단하는 단계; 및 모든 포트가 Empty 인 것으로 판단되면, 그룹 벡터 테이블을 업데이트 해야 하므로 해당 그룹의 해당 포트의 empty 벡터와 그룹에 대한 empty 벡터를 set하는 단계를 포함한다.Port scheduling method using the queue state change event vector table according to the present invention for achieving the above object, the table in the vector table management unit when the state of the queue length managed in the queue length counting unit changes from empty to non-empty In the method of updating the contents, if a state change occurs from 0 (Empty) to 1 (Non-Empty) of any queue, the current queue vector state is checked to update the value for the state change. Determining whether all queues are empty; If it is determined that all the queues are empty, a state change has occurred from empty to non-empty, so that setting the bit values of the ports in the group and the queue vector table; Obtaining a group ID and an entry ID of a port in the group since the values of the port and group vector table need to be updated; Determining whether all ports in the current group are empty when the group ID and the entry ID in the group are obtained; And if it is determined that all the ports are empty, the group vector table needs to be updated, and thus setting an empty vector of the corresponding port of the corresponding group and an empty vector for the group.

본 발명의 실시예를 설명하기 전에, 본 발명을 구현하기 위한 기본 개념을 설명하기로 한다.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 (16)

포트 스케쥴링 장치에 있어서,In the port scheduling apparatus, 다수의 포트를 일정한 개수로 묶어 포트들을 그룹화하고, 그룹화 된 포트 내의 일정한 개수의 큐들을 묶어 서브 그룹화한 상태에서, 각 그룹과 그룹내의 포트 그리고 포트 내의 큐의 인큐잉 및 디큐잉에 관한 관리를 수행하는 스케쥴러;Grouping ports by grouping a plurality of ports into a certain number, and performing grouping and subqueueing of each group, the ports in the group, and the queues in the ports, in a group of a certain number of queues in the grouped ports. A scheduler; 큐의 상태에 대한 이벤트 정보를 계층화하여 저장하는 벡터 테이블; 및A vector table for layering and storing event information about a state of a queue; And 큐의 상태변화 이벤트를 수신하여 벡터 테이블에 저장하는 벡터 테이블 관리부를 포함하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 장치.A port scheduling apparatus using a queue state change event vector table, comprising a vector table manager which receives a state change event of a queue and stores the same in a vector table. 제 1항에 있어서, 상기 스케쥴러는The method of claim 1, wherein the scheduler is 패킷을 실제 큐(Queue)에 Enqueuing/Dequeuing을 수행하면서 현재의 큐 길이(Queue Length)를 다이나믹하게 유지 관리하는 큐 길이 계수부;A queue length counting unit that dynamically maintains a current queue length while performing packet enqueuing / dequeuing to a real queue; 상기 큐 길이 계수부로부터 큐 길이에 대한 상태변화 이벤트(Empty->Non-Empty, Non-Empty->Empty)를 수신하여 벡터 테이블을 업데이트하는 벡터 테이블 관리부;A vector table manager which receives a state change event (Empty-> Non-Empty, Non-Empty-> Empty) for the queue length from the queue length counting unit and updates a vector table; Enqueuing된 패킷의 송신을 위해 그룹화된 포트 그룹을 선택하는 그룹 스케쥴러;A group scheduler for selecting a group of port groups grouped for transmission of an enqueued packet; 상기 그룹 스케쥴러와 각 포트에 주어진 가중치(Weight)에 따라 적당한 포트 를 선택하는 포트 스케쥴러;A port scheduler for selecting an appropriate port according to the group scheduler and a weight given to each port; 상기 포트 스케쥴러와 스케쥴링된 포트 내에서의 큐 선택을 담당하는 큐 스케쥴러를 포함하는 것을 특징으로 하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 장치.And a queue scheduler that is in charge of queue selection within the scheduled port with the port scheduler. 제 1항에 있어서, 상기 벡터 테이블은The method of claim 1, wherein the vector table is 그룹에 대한 상태 변화 이벤트 정보를 저장하는 그룹 벡터 테이블;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 큐에 대한 상태 변화 이벤트 정보를 저장하는 큐 벡터 테이블을 포함하는 것을 특징으로 하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 장치.Port scheduling apparatus using a queue state change event vector table, characterized in that it comprises a queue vector table for storing state change event information for the queue. 제 1항에 있어서, 상기 벡터 테이블은The method of claim 1, wherein the vector table is 각 그룹 내에 존재하는 다수개의 포트에 대응되는 비트 벡터를 이용하여 스케쥴링이 필요한지 여부를 표시하는 것을 특징으로 하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 장치.A port scheduling apparatus using a queue state change event vector table, which indicates whether scheduling is required using bit vectors corresponding to a plurality of ports existing in each group. 제 4항에 있어서, 상기 벡터 테이블은The method of claim 4, wherein the vector table is 그룹 벡터 테이블 내의 각 Empty Vector는 그룹내 포트들의 Empty Vector를 대표하는 것을 특징으로 하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 장치.Each Empty Vector in a group vector table represents an Empty Vector of ports in a group. Port scheduling apparatus using a queue state change event vector table. 제 5항에 있어서, 상기 벡터 테이블은The method of claim 5, wherein the vector table is 그룹 내 포트 중 스케쥴링 대상이 되는 포트가 존재하는지 여부를 비트 벡터를 이용하여 관리하는 것을 특징으로 하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 장치.A port scheduling apparatus using a queue state change event vector table, which manages whether a port to be scheduled among ports in a group exists using a bit vector. 제 6항에 있어서, 상기 벡터 테이블은7. The method of claim 6, wherein the vector table is 각 포트마다 존재하는 다수개의 큐에 대한 스케쥴링 여부는 그룹 내 포트 비트 벡터에 의해 대표하는 것을 특징으로 하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 장치.Port scheduling apparatus using a queue state change event vector table, characterized in that the scheduling of a plurality of queues existing for each port is represented by a port bit vector in the group. 제 7항에 있어서, 상기 벡터 테이블은The method of claim 7, wherein the vector table is 최종 각 큐에 대한 스케쥴링 대상 여부는 큐 Empty Vector 자체로 표시되는 것을 특징으로 하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 장 치.A port scheduling apparatus using the queue state change event vector table, wherein whether or not a final target is scheduled for each queue is indicated by the queue Empty Vector itself. 큐 길이 계수부에서 관리되는 큐 길이에 대한 상태가 empty에서 non-empty로 변화시 벡터 테이블 관리부에서 테이블 내용을 업데이트하는 방법에 있어서,In the method of updating the table contents in the vector table management unit when the status of the queue length managed by the queue length counting unit changes from empty to non-empty, 임의의 큐의 길이가 0 (Empty)에서 1 (Non-Empty)로 상태 변화가 발생되면, 상태 변화에 대한 값을 업데이트 하기 위해서, 현재의 큐 벡터 상태를 체크하여 모든 큐가 Empty 상태인지를 판단하는 단계;When the length of an arbitrary queue is changed from 0 (Empty) to 1 (Non-Empty), the current queue vector state is checked to determine if all queues are empty to update the value for the state change. Doing; 모든 큐가 Empty 인 것으로 판단되면, 큐 길이가 Empty에서 Non-Empty로 상태 변화가 발생된 것이므로, 그룹 내의 포트 그리고 큐 벡터 테이블의 비트값을 set하는 단계;If it is determined that all the queues are empty, a state change has occurred from empty to non-empty, so that setting the bit values of the ports in the group and the queue vector table; 포트 및 그룹 벡터 테이블의 값을 업데이트해야 하므로, 그룹 ID와 그룹 내 포트의 엔트리(entry) ID를 얻는 단계;Obtaining a group ID and an entry ID of a port in the group since the values of the port and group vector table need to be updated; 그룹 ID와 그룹 내 엔트리 ID를 얻으면, 현재 그룹 내의 모든 포트가 모두 Empty 상태인지를 판단하는 단계; 및Determining whether all ports in the current group are empty when the group ID and the entry ID in the group are obtained; And 모든 포트가 Empty 인 것으로 판단되면, 그룹 벡터 테이블을 업데이트 해야 하므로 해당 그룹의 해당 포트의 empty 벡터와 그룹에 대한 empty 벡터를 set하는 단계를 포함하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 방법.If all ports are determined to be empty, the group vector table needs to be updated, and thus a port scheduling method using the queue state change event vector table including setting an empty vector of the corresponding port of the corresponding group and an empty vector of the group. 제 9항에 있어서, 단 하나의 큐라도 Non-Empty인 것으로 판단되면, 벡터 테이블을 업데이트 할 필요 없이 이전의 값을 유지하는 것을 특징으로 하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 방법.10. The method of claim 9, wherein if a single queue is determined to be non-empty, the previous value is maintained without having to update the vector table. 제 10항에 있어서,The method of claim 10, 해당 포트의 해당 큐의 empty 벡터를 set하므로써 이전의 값을 유지하는 것을 특징으로 하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 방법.A port scheduling method using a queue state change event vector table, wherein a previous value is maintained by setting an empty vector of a corresponding queue of a corresponding port. 제 9항에 있어서, 그룹 ID와 그룹 내 포트의 엔트리(entry) ID를 얻는 단계는,The method of claim 9, wherein obtaining a group ID and an entry ID of a port in the group includes: 그룹 ID는 실제 포트 번호를 피제수로 두고, 각 그룹 내의 포트 수를 제수로 하여 계산된 값을 이용하고, 그룹 내 엔트리 ID는 실제 포트 번호를 피제수로 두고 각 그룹내의 포트 수를 제수하여 계산된 나머지값을 이용하는 것을 특징으로 하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 방법.The group ID is calculated by dividing the actual port number by the dividend and dividing the number of ports in each group. The entry ID in the group is calculated by dividing the number of ports in each group by using the actual port number as the dividend. Port scheduling method using a queue state change event vector table, wherein the value is used. 제 9항에 있어서, 모든 포트가 Empty가 아니고 단 하나의 포트라도 Non-Empty인 것으로 판단되면, 벡터 테이블을 업데이트 할 필요 없이 이전의 값을 유지 하는 것을 특징으로 하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 방법.10. The method of claim 9, wherein if it is determined that all ports are not empty and even one port is nonempty, the previous state is maintained without updating the vector table. How to schedule a port. 큐 길이 계수부에서 관리되는 큐 길이에 대한 상태가 non-empty에서 empty로 변화시 벡터 테이블 관리부에서 테이블 내용을 업데이트하는 방법에 있어서,In the method of updating the table contents in the vector table management unit when the status of the queue length managed by the queue length counting unit changes from non-empty to empty, 스케쥴링 이후 임의의 큐의 길이가 1(Non-Empty)에서 0 (Empty)으로 상태 변화시 상태 변화에 대한 값을 업데이트 하기 위해서, 해당 포트 내의 해당 큐의 Empty 벡터를 클리어하는 단계;Clearing an empty vector of the corresponding queue in the corresponding port in order to update the value for the state change when the length of the arbitrary queue changes from 1 (Non-Empty) to 0 (Empty) after scheduling; 모든 큐가 Empty 상태인지를 판단하여, 모든 큐가 Empty 인 것으로 판단되면 그룹 내의 포트 벡터 테이블 업데이트하는 단계;Determining whether all queues are empty, and if all queues are determined to be empty, updating the port vector table in the group; 포트 및 그룹 벡터 테이블의 값을 업데이트해야 하므로, 그룹 ID와 그룹 내 포트의 엔트리(entry) ID를 얻는 단계;Obtaining a group ID and an entry ID of a port in the group since the values of the port and group vector table need to be updated; 해당 그룹 내 해당 엔트리 ID의 Empty 벡터 비트를 클리어함으로써 그룹 내에서 이 포트가 이후 스케쥴링 대상에서 제외됨을 표시하는 단계;Indicating that this port is subsequently excluded from scheduling in the group by clearing the Empty vector bit of the corresponding Entry ID in the group; 현재 그룹 내의 모든 포트가 모두 Empty 상태인지를 판단하는 단계; 및Determining whether all ports in the current group are empty; And 모든 포트가 Empty인 것으로 판단되면, 그룹 벡터 테이블을 업데이트하기 위해 그룹 ID에 해당하는 벡터 테이블의 비트값을 클리어하는 단계를 포함하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 방법.And if all ports are determined to be empty, clearing the bit values of the vector table corresponding to the group ID to update the group vector table. 제 14항에 있어서, 모든 큐가 Empty 상태가 아닌 것으로 판단되면 상위 벡터 테이블의 비트 값을 클리어 할 필요가 없으므로 업데이트 과정을 종료하는 것을 특징으로 하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 방법.15. The method of claim 14, wherein if it is determined that all queues are not empty, the update process is terminated because the bit value of the higher vector table does not need to be cleared. 제 14항에 있어서, 모든 포트가 Empty 상태가 아니고 하나의 포트라도 Non-Empty인 경우, 업데이트 과정을 종료하는 것을 특징으로 하는 큐 상태 변화 이벤트 벡터 테이블을 이용한 포트 스케쥴링 방법.15. The method of claim 14, wherein the update process is terminated when all ports are not empty and at least one port is non-empty.
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 true KR20060081868A (en) 2006-07-13
KR100636272B1 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
KR20210050940A (en) 2019-10-29 2021-05-10 고려대학교 산학협력단 Method for managing multiple queues in switche ports, recording medium and device for performing the method

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101644800B1 (en) 2010-01-07 2016-08-02 삼성전자주식회사 Computing system and method

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5995511A (en) 1996-04-05 1999-11-30 Fore Systems, Inc. Digital network including mechanism for grouping virtual message transfer paths having similar transfer service rates to facilitate efficient scheduling of transfers thereover
JP2002057704A (en) 2000-08-09 2002-02-22 Nippon Telegr & Teleph Corp <Ntt> Packet transfer method
JP3934915B2 (en) 2000-11-24 2007-06-20 松下電器産業株式会社 Flow control apparatus and method

Cited By (1)

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

Also Published As

Publication number Publication date
KR100636272B1 (en) 2006-10-19

Similar Documents

Publication Publication Date Title
JP4879382B2 (en) Packet switch, scheduling device, discard control circuit, multicast control circuit, and QoS control device
CN107959636B (en) Method and device for sending BGP (Border gateway protocol) message
US8000247B2 (en) Bandwidth management apparatus
JP3871327B2 (en) Optimized scalable network switch
US7580355B2 (en) Method of performing weighted round-robin queue scheduling using a dynamic link list and structure for implementing same
WO2006091175A1 (en) Method and apparatus for buffer management in shared memory packet processors
EP1495596A1 (en) Reducing packet data delay variation
EP2187580B1 (en) Method for scheduling packets of a plurality of flows and system for carrying out the method
EP1055350A1 (en) Arbitration method and apparatus for a non-blocking switch
EP3008868B1 (en) Multicast flow reordering scheme
EP2740245B1 (en) A scalable packet scheduling policy for vast number of sessions
CN113890860B (en) Method, apparatus, and medium for supporting latency-limited data exchange
US8363668B2 (en) Avoiding unfair advantage in weighted round robin (WRR) scheduling
US8189578B2 (en) Simple fairness protocols for daisy chain interconnects
US6445706B1 (en) Method and device in telecommunications system
US7684422B1 (en) Systems and methods for congestion control using random early drop at head of buffer
US20030231590A1 (en) Method of performing deficit round-robin scheduling and structure for implementing same
KR100636272B1 (en) Apparatus for port scheduling and method thereof
Hu et al. Per-flow queueing by dynamic queue sharing
JP4164771B2 (en) Load balance type switch device and load balance type switch method
JP2000083055A (en) Router
WO2022035935A1 (en) Multi-packet sliding window scheduler and method for input-queued switches
CN102594670A (en) Multiport multi-flow scheduling method, device and equipment
US20030152082A9 (en) Distribution of weightings between port control system and switch cards of a packet switching device
US20210194817A1 (en) Delay-Aware Resource Sharing

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