KR100577448B1 - Method and apparatus for trunking multiple ports in a network switch - Google Patents

Method and apparatus for trunking multiple ports in a network switch Download PDF

Info

Publication number
KR100577448B1
KR100577448B1 KR1020017008440A KR20017008440A KR100577448B1 KR 100577448 B1 KR100577448 B1 KR 100577448B1 KR 1020017008440 A KR1020017008440 A KR 1020017008440A KR 20017008440 A KR20017008440 A KR 20017008440A KR 100577448 B1 KR100577448 B1 KR 100577448B1
Authority
KR
South Korea
Prior art keywords
port
trunk
frame
data
information
Prior art date
Application number
KR1020017008440A
Other languages
Korean (ko)
Other versions
KR20010101360A (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 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20010101360A publication Critical patent/KR20010101360A/en
Application granted granted Critical
Publication of KR100577448B1 publication Critical patent/KR100577448B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • H04L45/245Link aggregation, e.g. trunking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/205Quality of Service based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3027Output queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
    • H04L49/352Gigabit ethernet switching [GBPS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/354Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols

Landscapes

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

Abstract

다수의 포트들을 통해 데이터 패킷들을 교환하도록 구성된 네트워크 스위치는 어드레스 테이블을 이용하여 프레임 전송 정보를 생성한다. 의사 결정 엔진은 프레임 전송 정보를 체크하여 프레임이 트렁크의 일부인 포트에 전송되어야 하는 지의 여부를 결정한다. 프레임이 트렁크 포트에 출력되어야 할 때, 의사 결정 엔진은 프레임을 전송할 포트를 결정한다. Network switches configured to exchange data packets over multiple ports use the address table to generate frame transmission information. The decision engine checks the frame transmission information to determine whether the frame should be sent to a port that is part of the trunk. When a frame is to be output to a trunk port, the decision engine determines the port to send the frame to.

Description

네트워크 스위치 내에 다수의 포트들을 트렁킹하는 방법 및 장치{METHOD AND APPARATUS FOR TRUNKING MULTIPLE PORTS IN A NETWORK SWITCH}METHOD AND APPARATUS FOR TRUNKING MULTIPLE PORTS IN A NETWORK SWITCH}

본 발명은 네트워크 통신에 관한 것으로서, 네트워크 스위치 내에 다수의 포트들을 트렁킹함으로써 고속 네트워크 링크를 제공하는 것에 관한 것이다. TECHNICAL FIELD The present invention relates to network communications, and to providing a high speed network link by trunking multiple ports within a network switch.

컴퓨터 네트워크에서는, 다수의 네트워크 스테이션들이 통신 매체를 통해 서로 접속된다. 예를 들어, 이서넷은 공통으로 이용되는 국부 영역 네트워크 방식으로서, 여기에서는 다수의 스테이션들이 단일의 공용 직렬 데이터 경로에 접속된다. 이러한 스테이션들은 종종 공용 데이터 경로와 이 경로에 접속된 스테이션들 사이에 위치하는 스위치에 의해 통신한다. 전형적으로, 이 스위치는 네트워크 상에서의 데이터 패킷들의 통신을 제어한다. In a computer network, multiple network stations are connected to each other via a communication medium. For example, Ethernet is a commonly used local area network scheme where multiple stations are connected to a single common serial data path. These stations often communicate by a switch located between the public data path and the stations connected to the path. Typically, this switch controls the communication of data packets on the network.

네트워크 스위치는, 프레임들을 수신한 다음 적절한 목적지들에게 전송하는 스위칭 논리를 포함한다. 프레임 전송 결정(frame forwarding decision)을 생성하기 위한 하나의 구성은 직접 어드레싱 방식을 이용하는 것인바, 이 방식에서 네트워크 스위치는 목적지 어드레스들에 대한 스위칭 논리를 저장하는 고정 어드레스 테이블(fixed address table)을 포함한다. 예를 들어, 소스 어드레스 및 목적지 어드레스를 나타내는 헤더 정보를 갖는 프레임이 네트워크 스위치에 의해 수신된다. 스위칭 논리는 소스 어드레스 및 목적지 어드레스를 룩업들로서 이용하여 고정 어드레스 테이블을 서치하여, 적절한 프레임 전송 정보를 찾는다. 스위치는 이 정보를 이용하여 프레임을 적절한 포트(들)에 전송한다. The network switch includes switching logic that receives the frames and then sends them to the appropriate destinations. One configuration for generating a frame forwarding decision is to use a direct addressing scheme, in which the network switch includes a fixed address table that stores switching logic for destination addresses. do. For example, a frame having header information indicating a source address and a destination address is received by the network switch. The switching logic searches the fixed address table using the source address and destination address as lookups to find the appropriate frame transfer information. The switch uses this information to send the frame to the appropriate port (s).

네트워크에 접속된 모든 스테이션들이 동시에 동작하면, 패킷들 간에 시간이 거의 없어지게 되어 공용 직렬 경로 상의 패킷 트래픽이 많아지게 된다. 또한, 네트워크 쓰루풋 요건으로 인해, 데이터가 그 목적지로 전송되는 속도를 증가시키는 것이 점점 중요하게 되었다. If all the stations connected to the network are operating at the same time, there is little time between packets, resulting in more packet traffic on the public serial path. In addition, due to network throughput requirements, it has become increasingly important to increase the speed at which data is sent to its destination.

데이터가 스테이션 간에 전송되는 속도를 증가시키는 하나의 구성은 2개의 스테이션들 간에 트렁크를 형성하기 위해 다수의 링크들을 결합하는 "트렁킹"(이는, 링크 집합(link aggregation)이라고도 일컬어진다)을 이용한다. 예를 들어, 스위치 상의 2개의 개별적인 포트들이 각각 100 Mb/s의 데이터 전송 속도를 지원하도록 구성된다고 가정하자. 트렁킹 방식은 2개의 포트들을 함께 연결하여 이러한 2개의 포트들을 통해 데이터를 송/수신함으로써, 2개의 스테이션들 간에 1개의 200Mb/s 링크를 형성한다. One configuration that increases the speed at which data is transmitted between stations uses "trunking" (also referred to as link aggregation), which combines multiple links to form a trunk between two stations. For example, assume that two separate ports on the switch are each configured to support a data transfer rate of 100 Mb / s. The trunking scheme connects the two ports together to send / receive data through these two ports, thus forming one 200 Mb / s link between the two stations.

이러한 트렁킹 방식이 갖는 단점은, 어드레스 테이블이 데이터를 전송할 특정 트렁크 포트를 포함한 적절한 트렁킹 정보를 저장해야 한다는 것이다. 즉, 어드레스 테이블은 특정 포트가 트렁크의 일부인지의 여부를 나타내는 정보 뿐 아니라, 데이터 전송 정보가 출력 포트가 트렁크의 일부임을 나타내는 경우, 트렁크의 어느 포트에 데이터를 전송해야 하는 지를 나타내는 정보를 저장해야 한다. 어드레스 테이블에 이러한 트렁킹 정보를 저장하게 되면, 어드레스 테이블의 물리적인 크기를 상당히 증가시키고 스위칭 논리를 상당히 복잡하게 함으로써, 프레임 전송 정보를 찾는 데에 걸리는 시간이 증가한다. The disadvantage of this trunking scheme is that the address table must store the appropriate trunking information, including the specific trunk port to which the data will be sent. That is, the address table should store not only information indicating whether a specific port is part of a trunk, but also information indicating which port of a trunk should be transmitted when data transmission information indicates that an output port is part of a trunk. do. Storing this trunking information in the address table increases the time it takes to find frame transfer information by significantly increasing the physical size of the address table and significantly complicating the switching logic.

또한, 저장된 트렁킹 정보에 대한 변경이 요구될 때, 즉, 네트워크 구성이 변경되면, 새로운 트렁킹 구성을 반영하도록 어드레스 테이블 또한 대응하게 변경되어야 한다. 이러한 어드레스 테이블의 재구성 과정은 시간 소모적이고 비용이 많이 들기 때문에, 네크워크 고장 시간(downtime)을 야기시킬 수 있다. In addition, when a change to the stored trunking information is required, that is, when the network configuration is changed, the address table must also be correspondingly changed to reflect the new trunking configuration. This reconfiguration of the address table is time consuming and expensive, which can lead to network downtime.

따라서, 어드레스 테이블에 트렁킹 정보를 저장하지 않으면서 트렁킹을 지원하는 스위치 장치의 필요성이 대두되었다. Accordingly, there is a need for a switch device that supports trunking without storing trunking information in an address table.

또한, 어드레스 테이블을 재프로그래밍하지 않으면서 트렁킹을 지원하고 트렁킹을 변경할 수 있는 스위칭 장치에 대한 필요성이 대두되었다. There is also a need for a switching device that can support trunking and change trunking without reprogramming the address table.

상기 및 다른 목적들은 본 발명에 의해 달성되는바, 본 발명의 멀티포트 스위치가 프레임 전송 결정을 행하기 위해 의사 결정 엔진(decision making engine)에 의해 이용되는 어드레스 엔트리들을 저장하는 어드레스 테이블을 포함한다. 이러한 의사 결정 엔진은, 트렁크의 일부인 출력 포트를 통해 프레임이 전송되어야 하는 지의 여부를 결정하기 위해 프레임 전송 정보를 조사하는 트렁킹 기능을 포함한다. 출력 포트가 트렁크의 일부이면, 의사 결정 엔진은 트렁크 맵핑 기능을 수행하여 프레임을 전송할 특정 포트를 결정한다. These and other objects are achieved by the present invention, which includes an address table in which the multiport switch of the present invention stores address entries used by a decision making engine to make frame transmission decisions. Such a decision engine includes a trunking function that examines frame transmission information to determine whether a frame should be transmitted over an output port that is part of a trunk. If the output port is part of a trunk, the decision engine performs the trunk mapping function to determine the specific port to send the frame.

본 발명의 일 양상에 따르면, 네트워크 스위치는 스테이션들 간의 데이터 프레임들의 통신을 제어하고 트렁킹을 지원하도록 구성된다. 이 스위치는 어드레스 정보 및 데이터 전송 정보를 저장하는 테이블을 포함한다. 이 스위치는 또한 테이블을 서치하고 데이터 프레임에 대한 데이터 전송 정보를 생성하도록 구성된 의사 결정 엔진을 포함한다. 이 의사 결정 엔진은 또한, 데이터 프레임이 트렁크의 일부인 포트를 통해 전송되어야 하는 지의 여부를 결정하고, 포트가 트렁크의 일부인 경우, 데이터 프레임을 전송할 전송 포트를 결정하도록 구성된다. According to one aspect of the invention, the network switch is configured to control the communication of data frames between stations and to support trunking. This switch includes a table that stores address information and data transfer information. The switch also includes a decision engine configured to search the tables and generate data transfer information for the data frames. The decision engine is also configured to determine whether a data frame should be sent over a port that is part of the trunk, and if the port is part of a trunk, determine a transmission port to which to send the data frame.

본 발명의 다른 양상은 스테이션들 간의 데이터 프레임들의 통신을 제어하는 멀티포트 스위치에 데이터 전송 정보를 생성하는 방법을 제공한다. 이 방법은 데이터 프레임으로부터 정보를 수신하는 단계, 및 수신된 정보에 기초하여 어드레스 테이블을 서치하여 데이터 전송 정보를 찾는 단계를 포함한다. 이 방법은 또한, 데이터 프레임이 트렁크의 일부인 포트를 통해 전송되어야 하는 지의 여부를 결정하는 단계를 포함한다. 이 방법은 또한, 프레임이 트렁크의 일부인 포트를 통해 전송되어야 할 때, 데이터 프레임을 전송할 전송 포트를 나타내는 값을 생성하는 단계를 포함한다. Another aspect of the invention provides a method of generating data transmission information at a multiport switch that controls communication of data frames between stations. The method includes receiving information from a data frame, and searching the address table based on the received information to find data transmission information. The method also includes determining whether a data frame should be sent over a port that is part of a trunk. The method also includes generating a value indicating a transmission port to which to transmit the data frame when the frame is to be transmitted through a port that is part of a trunk.

본 발명의 다른 장점들 및 특징들은 첨부 도면을 참조하여 설명되는 하기의 상세한 설명으로부터 당업자들에게 보다 명확해질 것이다. 도시되어 설명되는 실시예는 본 발명을 수행하는 최상의 모드를 제공한다. 본 발명은 본 발명의 범위를 벗어나지 않으면서 다양하고 명백한 관점들에서 변경될 수 있다. 따라서, 도면들은 제한적인 것이 아니라 예시적인 것으로서 간주되어야 한다. Other advantages and features of the present invention will become more apparent to those skilled in the art from the following detailed description, which is described with reference to the accompanying drawings. The illustrated and described embodiment provides the best mode for carrying out the present invention. The present invention can be changed in various and obvious aspects without departing from the scope of the invention. Accordingly, the drawings are to be regarded as illustrative rather than restrictive.

도 1은 본 발명의 일 실시예에 따른 다수의 포트 스위치를 포함하는 패킷 교환 네트워크의 블록도이다. 1 is a block diagram of a packet switched network including multiple port switches in accordance with one embodiment of the present invention.

도 2는 도 1의 다수의 포트 스위치의 블록도이다. FIG. 2 is a block diagram of multiple port switches of FIG. 1.

도 3은 도 2의 스위칭 서브시스템의 상세 블록도이다. 3 is a detailed block diagram of the switching subsystem of FIG. 2.

도 4는 본 발명의 일 실시예에 따른 도 2의 내부 룰 체커(internal rules checker)를 포함하는 시스템의 블록도이다. 4 is a block diagram of a system including the internal rules checker of FIG. 2 in accordance with an embodiment of the present invention.

도 5는 도 4의 IRC 어드레스 테이블의 구성을 도시한다. FIG. 5 shows a configuration of the IRC address table of FIG. 4.

도 6은 도 5의 IRC 어드레스 테이블의 IRC 어드레스 테이블 엔트리의 포맷을 도시한다. 6 illustrates the format of an IRC address table entry of the IRC address table of FIG. 5.

도 7은 선택된 빈(bin)에 대한 테이블 엔트리들을 식별하기 위한 링크된 리스트 체인들을 도시한다. 7 shows linked list chains for identifying table entries for a selected bin.

도 8은 도 2의 내부 룰 체커와 함께 이용하기 위한 해시 함수 회로를 도시한다. 8 illustrates a hash function circuit for use with the internal rule checker of FIG. 2.

도 9는 본 발명의 일 실시예에 따른 전송 기술자(forwarding descriptor)의 구성을 도시한다. 9 illustrates a configuration of a forwarding descriptor according to an embodiment of the present invention.

도 10은 본 발명의 일 실시예에 따른 트렁크 멤버십 편성(trunk membership combination)을 도시한다. 10 illustrates a trunk membership combination according to an embodiment of the present invention.

도 11은 본 발명의 일 실시예에 따른 트렁킹에 관련하여 프레임 전송 정보를 생성하는 방법을 나타낸 흐름도이다. 11 is a flowchart illustrating a method of generating frame transmission information in relation to trunking according to an embodiment of the present invention.

도 12는 본 발명의 일 실시예에 따른 트렁크 맵핑 논리를 나타낸다. 12 illustrates trunk mapping logic according to an embodiment of the present invention.

이제, 이서넷(IEEE 802.3) 네트워크와 같은 패킷 교환 네트워크에 있어서의 스위치를 예로 들어 본 발명에 대해 설명한다. 하지만, 하기에서 상세히 설명하는 바와 같이, 본 발명이 다른 패킷 교환 시스템들 및 일반적인 다른 타입의 시스템들에도 적용할 수 있다는 것은 명백하다. The present invention will now be described taking as an example a switch in a packet switched network such as an Ethernet (IEEE 802.3) network. However, as will be described in detail below, it is clear that the present invention can be applied to other packet switching systems and other types of systems in general.

스위치 아키텍쳐 개요Switch Architecture Overview

도 1은 본 발명이 유익하게 이용될 수 있는 예시적인 시스템의 블록도이다. 이 예시적인 시스템(10)은 이서넷(IEEE 802.3) 네트워크와 같은 패킷 교환 네트워크이다. 이러한 패킷 교환 네트워크는 네트워크 스테이션들 간의 데이터 패킷들의 통신을 가능하게 하는 통합 멀티포트 스위치들(IMS)(12)을 포함한다. 이 네트워크는 다른 구성들을 갖는 네트워크 스테이션들, 예를 들어 10Mb/s 또는 100 Mb/s의 네트워크 데이터 속도로 데이터를 송수신하는 12개의 10Mb/s 또는 100 Mb/s 네트워크 스테이션들(14)(이하, 10/100 Mb/s라 칭한다) 및 1Gb/s의 네트워크 속도로 데이터 패킷들을 송수신하는 1000Mb/s(즉, 1Gb/s) 네트워크 노드(22)를 포함할 수 있다. 기가비트 노드(22)는 서버, 또는 고속 백본 네트워크에 대한 게이트웨이가 될 수 있다. 이에 따라, 멀티포트 스위치들(12)은 네트워크 노드들(14 또는 22)로부터 수신한 데이터 패킷들을, 이서넷 프로토콜에 기초하여 적절한 목적지에 선택적으로 전송한다. 1 is a block diagram of an exemplary system in which the present invention may be advantageously employed. This example system 10 is a packet switched network, such as an Ethernet (IEEE 802.3) network. Such a packet switched network includes integrated multiport switches (IMS) 12 that enable communication of data packets between network stations. This network consists of network stations having other configurations, e.g., 12 10 Mb / s or 100 Mb / s network stations 14 (hereinafter, referred to as 10 Mb / s or 100 Mb / s) that transmit and receive data at network data rates. And 1000 Mb / s (ie, 1 Gb / s) network node 22 for transmitting and receiving data packets at a network speed of 10/100 Mb / s) and 1 Gb / s. Gigabit node 22 may be a server or a gateway to a high-speed backbone network. Accordingly, the multiport switches 12 selectively transmit data packets received from the network nodes 14 or 22 to the appropriate destination based on the Ethernet protocol.

각 멀티포트 스위치(12)는 매체 접속 제어(MAC) 모듈(20)을 포함하는바, 이는 IEEE 802.3u 프로토콜에 따라 각각의 감소된 매체 독립 인터페이스들(RMII)(18)을 통해 10/100 Mb/s 물리층(PHY) 트랜스시버들(16)로/로부터 데이터 패킷들을 송/수신한다. 각 멀티포트 스위치(12)는 또한, 고속 네트워크 매체(28)를 통해 기가비트 노드(22)에 전송하기 위해 기가비트 PHY(26)와 데이터를 송수신하는 기가비트 MAC(24)을 포함한다. Each multiport switch 12 includes a media access control (MAC) module 20, which is 10/100 Mb over each reduced media independent interfaces (RMII) 18 in accordance with the IEEE 802.3u protocol. / s Transmit / receive data packets to / from physical layer (PHY) transceivers 16. Each multiport switch 12 also includes a gigabit MAC 24 for transmitting and receiving data to and from the gigabit PHY 26 for transmission to the gigabit node 22 via the high speed network medium 28.

각 10/100 Mb/s 네트워크 스테이션(14)은, 반이중 또는 전이중 이서넷 프로토콜에 따라, 매체(17)를 통해 대응하는 멀티포트 스위치(12)와 데이터 패킷들을 송수신한다. 이서넷 프로토콜 ISO/IEC 8802-3 (ANSI/IEEE 표준 802.3 1993년판)은 모든 스테이션들(14)이 동등하게 네트워크 채널을 액세스할 수 있게 하는 반이중 매체 접속 메커니즘을 정의한다. 반이중 환경에서의 트래픽은 매체(17) 상에서 구별되지 않는다. 그렇다기 보다는, 각 반이중 스테이션(14)은 캐리어 검출 다중 접근/충돌 검출(CSMA/CD)을 이용하여 매체 상의 트래픽을 감시하는 이서넷 인터페이스 카드를 포함한다. 네트워크 트래픽의 부재는 매체 상에서의 수신 캐리어의 비표명(deassertion)을 감지함으로써 검출된다. 전송할 데이터를 갖는 어떠한 스테이션(14)은, 매체 상에서의 수신 캐리어의 비표명 이후, 인터패킷 갭 간격(IPG)으로서 알려져있는 소정의 시간을 기다림으로써 채널을 액세스하고자 시도할 것이다. 다수의 스테이션들(14)이 네트워크 상에 전송할 데이터를 가지고 있으면, 각 스테이션들은 매체 상에서의 수신 캐리어의 비표명의 감지에 반응하여 그리고 IPG 간격 이후에 전송하고자 시도함으로써, 결과적으로 충돌을 야기시킬 수도 있다. 이에 따라, 전송 스테이션은 매체를 모니터하여, 동시에 데이터를 전송하는 다른 스테이션으로 인한 충돌이 있는 지의 여부를 결정한다. 충돌이 검출되면, 양쪽 스테이션들은 정지하고, 임의 시간을 기다린 다음, 전송을 재시도한다. Each 10/100 Mb / s network station 14 transmits and receives data packets with the corresponding multiport switch 12 over medium 17, in accordance with a half- or full-duplex Ethernet protocol. The Ethernet protocol ISO / IEC 8802-3 (ANSI / IEEE Standard 802.3 1993 edition) defines a half-duplex medium access mechanism that allows all stations 14 to access the network channel equally. Traffic in the half duplex environment is not distinguished on the medium 17. Rather, each half-duplex station 14 includes an Ethernet interface card that monitors traffic on the medium using carrier detection multiple access / collision detection (CSMA / CD). The absence of network traffic is detected by sensing the deassertion of the receiving carrier on the medium. Any station 14 having data to transmit will attempt to access the channel after waiting for a predetermined time, known as the Interpacket Gap Interval (IPG), after deassertion of the receiving carrier on the medium. If multiple stations 14 have data to transmit on the network, each station may result in a collision by responding to the detection of an unannouncement of the receiving carrier on the medium and attempting to transmit after the IPG interval. . Accordingly, the transmitting station monitors the medium to determine whether there is a collision due to other stations transmitting data at the same time. If a collision is detected, both stations stop, wait for some time and then retry the transmission.

전이중 모드에서 동작하는 10/100 Mb/s 네트워크 스테이션들(14)은 이서넷 표준 IEEE 802.3u에 따라 데이터 패킷들을 송수신한다. 전이중 환경은, 각 링크 파트너 간에, 즉 10/100 Mb/s 네트워크 스테이션(14)과 대응하는 멀티포트 스위치(12) 간의 데이터 패킷들의 동시 송수신을 가능하게 하는 양방향의 점 대 점(point to point) 통신 링크를 제공한다. 10/100 Mb / s network stations 14 operating in full duplex mode transmit and receive data packets according to the Ethernet standard IEEE 802.3u. The full-duplex environment is a bi-directional point to point that allows simultaneous transmission and reception of data packets between each link partner, i.e. between the 10/100 Mb / s network station 14 and the corresponding multiport switch 12. Provide a communication link.

각 멀티포트 스위치(12)는, 대응하는 감소된 매체 독립 인터페이스(RMII)(18)를 통해 대응하는 멀티포트 스위치(12)와 데이터 패킷들을 송수신하도록 구성된 10/100 물리층(PHY) 트랜스시버(16)에 결합된다. 특히, 각 10/100 PHY 트랜스시버(16)는 RMII(18)를 통해 멀티포트 스위치(12)와 최대 4개의 네트워크 스테이션들(14) 간에 데이터 패킷들을 송수신하도록 구성된다. 자기 트랜스포머(19)는 PHY 트랜스시버(16)와 대응하는 네트워크 스테이션 매체들(17) 간에 AC 결합을 제공한다. 이에 따라, RMII(18)는 각 네트워크 스테이션들(14)이 대응하는 PHY 트랜스시버(16)에게 데이터 패킷들을 동시에 송수신할 수 있는 충분한 데이터 속도로 동작한다. Each multiport switch 12 is a 10/100 physical layer (PHY) transceiver 16 configured to transmit and receive data packets with the corresponding multiport switch 12 via a corresponding reduced medium independent interface (RMII) 18. Is coupled to. In particular, each 10/100 PHY transceiver 16 is configured to send and receive data packets between the multiport switch 12 and up to four network stations 14 via the RMII 18. The magnetic transformer 19 provides AC coupling between the PHY transceiver 16 and the corresponding network station media 17. Accordingly, the RMII 18 operates at a sufficient data rate so that each network station 14 can simultaneously send and receive data packets to and from the corresponding PHY transceiver 16.

각 멀티포트 스위치(12)는 또한 규정된 프로토콜에 따라 다른 스위치들 간에 데이터를 전송하는 확장 포트(30)를 포함한다. 각 확장 포트(30)는 다수의 멀티포트 스위치들(12)이 개별적인 백본 네트워크로서 함께 캐스케이드(cascade)될 수 있게 한다. Each multiport switch 12 also includes an expansion port 30 for transferring data between other switches in accordance with a defined protocol. Each expansion port 30 allows multiple multiport switches 12 to be cascaded together as separate backbone networks.

도 2는 멀티포트 스위치(12)의 블록도이다. 이 멀티포트 스위치(12)는 프레임 전송 결정을 수행하는 의사 결정 엔진(40)과, 프레임 전송 결정에 따라 프레임 데이터를 전송하는 스위칭 서브시스템(42)과, 외부 메모리 인터페이스(44)와, 관리 정보 베이스(MIB) 카운터들(48a 및 48b)(총체적으로 48)과, 그리고 네트워크 스테이션들(14)과 기가비트 노드(22)를 서빙하는 이서넷(IEEE 802.3) 포트들 간의 데이터 패킷들의 라우팅을 지원하는 MAC(매체 접속 제어) 프로토콜 인터페이스들(20 및 24)을 포함한다. MIB 카운터들(48)은 관리 정보 베이스(MIB) 오브젝트 형태의 통계적 네트워크 정보를 호스트 CPU(32)에 의해 제어되는 외부 관리 엔티티에게 제공하는바, 이에 대해서는 하기에서 설명한다. 2 is a block diagram of the multiport switch 12. The multiport switch 12 includes a decision engine 40 for performing a frame transmission decision, a switching subsystem 42 for transmitting frame data in accordance with the frame transmission decision, an external memory interface 44, and management information. It supports routing of data packets between base (MIB) counters 48a and 48b (collectively 48) and Ethernet (IEEE 802.3) ports serving network stations 14 and gigabit node 22. MAC (Media Access Control) protocol interfaces 20 and 24. The MIB counters 48 provide statistical network information in the form of a management information base (MIB) object to an external management entity controlled by the host CPU 32, as described below.

외부 메모리 인터페이스(44)는, 예를 들어 동기 스태틱 랜덤 액세스 메모리(SSRAM)와 같은 외부 메모리(36)에 패킷 데이터를 외부적으로 저장할 수 있게 함으로써, 멀티포트 스위치(12)의 칩 크기를 최소화한다. 특히, 멀티포트 스위치(12)는 외부 메모리(36)를 이용하여, 수신된 프레임 데이터 및 메모리 구조들을 저장한다. 이 외부 메모리(36)는 바람직하게는 64 비트 폭의 데이터 경로 및 17 비트 폭의 어드레스 경로를 갖는 제로 버스 턴어라운드TM(ZBT)-SSRAM 또는 조인트 일렉트론 디바이스 엔지니어링 카운실(JEDEC) 파이프라인 버스트이다. 이 외부 메모리(36)는 64 비트 워드들의 128K의 상위 및 하위 뱅크들로서 어드레스가능하다. 이 외부 메모리(36)의 크기는 바람직하게는 적어도 1Mbytes이며, 데이터 전송은 파이프라인을 통해 모든 클럭 주기 마다 가능하다. 또한, 외부 메모리 인터페이스 클럭은 적어도 66MHz, 바람직하게는 100MHz 및 그 이상의 클럭 주파수들에서 동작한다. The external memory interface 44 minimizes chip size of the multiport switch 12 by allowing packet data to be stored externally in external memory 36, such as, for example, synchronous static random access memory (SSRAM). . In particular, multiport switch 12 uses external memory 36 to store received frame data and memory structures. This external memory 36 is preferably a zero bus turnaround TM (ZBT) -SSRAM or Joint Electron Device Engineering Council (JEDEC) pipeline burst with a 64-bit wide data path and a 17-bit wide address path. This external memory 36 is addressable as upper and lower banks of 128K of 64-bit words. The size of this external memory 36 is preferably at least 1 Mbytes, and data transfer is possible at every clock period through the pipeline. In addition, the external memory interface clock operates at clock frequencies of at least 66 MHz, preferably 100 MHz and higher.

멀티포트 스위치(12)는 또한, 호스트 CPU(32)와 같은 외부 관리 엔티티가 멀티포트 스위치(12)의 전체적인 동작을 제어할 수 있게 하는 프로세싱 인터페이스(50)를 포함한다. 특히, 프로세싱 인터페이스(50)는 규정된 레지스터 액세스 공간 내에서 CPU 액세스들을 디코드하고, 구성 및 상태 레지스터들(52)에/로부터 구성 및 상태 값들을 기록/판독한다. Multiport switch 12 also includes a processing interface 50 that allows an external management entity, such as host CPU 32, to control the overall operation of multiport switch 12. In particular, processing interface 50 decodes CPU accesses within a defined register access space and writes / reads configuration and status values to and from configuration and status registers 52.

내부 룰 체커(IRC)로 일컬어지는 내부 의사 결정 엔진(40)은 수신된 데이터 패킷들에 대한 프레임 전송 결정을 행한다. An internal decision engine 40, referred to as an internal rule checker (IRC), makes frame transmission decisions for received data packets.

멀티포트 스위치(12)는 또한, 포트 마다의 조건들의 상태를 클럭 아웃시키고 외부 LED 논리를 구동시키는 LED 인터페이스(54)를 포함한다. 외부 LED 논리는 인간이 판독할 수 있는 LED 디스플레이 요소들을 구동시킨다. Multiport switch 12 also includes an LED interface 54 that clocks out the state of the conditions per port and drives external LED logic. External LED logic drives the human readable LED display elements.

IRC(40)의 프레임 전송 결정을 실행하도록 구성된 스위칭 서브시스템(42)은 포트 벡터 선입선출(FIFO) 버퍼(56), 다수의 출력 큐들(58), 멀티카피 큐(60), 멀티카피 캐시(62), 프리 버퍼 큐(free buffer queue)(64) 및 재요구 큐(reclaim queue)(66)를 포함한다. The switching subsystem 42 configured to execute the frame transmission decision of the IRC 40 includes a port vector first-in-first-out (FIFO) buffer 56, a plurality of output queues 58, a multicopy queue 60, a multicopy cache ( 62, a free buffer queue 64 and a reclaim queue 66.

MAC 유닛(20)은 각 포트에 대한 모듈들을 포함하는바, 각 모듈은 MAC 수신부, 수신 FIFO 버퍼, 전송 FIFO 버퍼 및 MAC 전송부를 포함한다. 네트워크 스테이션(14)으로부터의 데이터 패킷들은 대응하는 MAC 포트에 의해 수신된 다음, 대응하는 수신 FIFO에 저장된다. MAC 유닛(20)은 프리 버퍼 큐(64)로부터 프리 버퍼 위치(즉, 프레임 포인터)를 얻고, 수신된 데이터 패킷을 대응하는 수신 FIFO로부터 외부 메모리 인터페이스(44)로 출력하여, 프레임 포인터에 의해 지정되는 위치에서 외부 메모리(36)에 저장한다. The MAC unit 20 includes modules for each port, each module including a MAC receiver, a receive FIFO buffer, a transmit FIFO buffer and a MAC transmitter. Data packets from the network station 14 are received by the corresponding MAC port and then stored in the corresponding receive FIFO. The MAC unit 20 obtains a free buffer position (i.e., frame pointer) from the free buffer queue 64, outputs the received data packet from the corresponding receive FIFO to the external memory interface 44, and designates it by the frame pointer. To the external memory 36 at the location.

IRC(40)는 데이터 버스를 모니터(즉, "스누프(snoop)")하여, 수신된 패킷의 프레임 포인터 값 및 헤더 정보(소스, 목적지 및 VLAN 어드레스 정보를 포함한다)를 결정한다. 이 IRC(40)는 헤더 정보를 이용하여, 어느 MAC 포트가 프레임 포인터에 의해 지정된 위치에 저장된 데이터 프레임을 출력할 것인지를 결정한다. 따라서, 의사 결정 엔진(즉, IRC(40))은 소정의 데이터 프레임이 단일 포트에 의해 출력되어야 하는지, 멀티 포트들에 의해 출력되어야 하는지, 모든 포트들에 의해 출력되어야 하는지(즉, 방송되어야 하는지), 아니면 어떤 포트에 의해서도 출력되지 않는지(즉, 폐기)를 결정한다. 예를 들어, 각 데이터 프레임은 소스 및 목적지 어드레스를 갖는 헤더를 포함하는바, 의사 결정 엔진(40)은 목적지 어드레스에 기초하여 적절한 출력 MAC 포트를 식별할 수 있다. 대안적으로, 목적지 어드레스는, 적절한 의사 결정 엔진이 다수의 네트워크 스테이션들에 대응하는 것으로서 식별하는 가상 어드레스에 대응할 수 있다. 또한, 프레임은, 이 프레임을 규정된 스테이션들의 그룹중 하나 또는 그 이상의 멤버들에게 예정된 정보로서 식별하는 VLAN 태그 헤더를 포함할 수 있다. IRC(40)는 또한 수신된 데이터 패킷이 확장 포트(30)를 통해 다른 멀티포트 스위치(12)에 전송되어야 함을 결정할 수 있다. 이에 따라, 내부 룰 체커(40)는 외부 메모리(36)에 일시적으로 저장된 프레임이 단일 MAC 포트로 출력되어야 하는지, 아니면 다수의 MAC 포트들로 출력되어야 하는 지의 여부를 결정할 것이다. IRC 40 monitors the data bus (ie, "snoop") to determine the frame pointer value and header information (including source, destination and VLAN address information) of the received packet. The IRC 40 uses the header information to determine which MAC port will output the data frame stored at the location specified by the frame pointer. Thus, the decision engine (i.e., IRC 40) must determine whether a given data frame should be output by a single port, by multiple ports, or by all ports (i.e. broadcast). ), Or not output by any port (ie discard). For example, each data frame includes a header having a source and a destination address, so that decision engine 40 can identify the appropriate output MAC port based on the destination address. Alternatively, the destination address may correspond to a virtual address that the appropriate decision engine identifies as corresponding to multiple network stations. The frame may also include a VLAN tag header that identifies the frame as information destined for one or more members of a defined group of stations. IRC 40 may also determine that the received data packet should be sent to another multiport switch 12 via expansion port 30. Accordingly, the internal rule checker 40 will determine whether a frame temporarily stored in the external memory 36 should be output to a single MAC port or to multiple MAC ports.

내부 룰 체커(40)는 전송 결정을 전송 기술자의 형태로 스위치 서브시스템(42)에 출력한다. 전송 기술자는 프레임이 높은 우선순위인지 낮은 우선순위인지의 여부를 식별하는 우선순위 부류(priority class)와, 데이터 프레임을 전송해야 하는 각 MAC 포트를 식별하는 포트 벡터와, 수신 포트 번호와, 태그되지 않은 세트와, VLAN 정보와, 전송하는 동안 VLAN 정보를 포함해야 하는 각 MAC 포트를 식별하는 벡터와, 연산코드(opcode)와, 그리고 프레임 포인터를 포함한다. 이러한 전송 기술자의 포맷은 도 9와 관련하여 더 설명한다. 포트 벡터는 데이터 프레임을 수신하여 전송하기 위한 MAC 포트들(예를 들어, 10/100 MAC 포트들(1-12), 기가비트 MAC 포트들 그리고/또는 확장 포트)을 식별한다. 포트 벡터 FIFO(56)는 포트 벡터를 포함하는 전송 기술자를 디코드하고, 데이터 프레임 전송을 수신하기 위해 출력 MAC 포트들에 대응하는 적절한 출력 큐들(58)에 프레임 포인터를 제공한다. 즉, 포트 벡터 FIFO(56)는 프레임 포인터를 포트 마다 제공한다. 출력 큐들(58)이 프레임 포인터를 디큐잉 블록(dequeuing block)(76)(도 3에 도시)에 주면, 이 디큐잉 블록(76)은 외부 메모리 인터페이스(44)를 통해 외부 메모리(36)로부터 포트 벡터로 식별되는 데이터 프레임을 페치하고, 검색된 데이터 프레임을 식별된 포트들의 적절한 전송 FIFO에 제공한다. 만일 데이터 프레임이 관리 에이젼트(management agent)에게 제공되어야 한다면, 프레임 포인터 또한 관리 큐(68)에게 제공되는바, 이는 CPU 인터페이스(50)를 통해 호스트 CPU(32)에 의해 처리될 수 있다. The internal rule checker 40 outputs the forwarding decision to the switch subsystem 42 in the form of a forwarding descriptor. The transmit descriptor may be tagged with a priority class that identifies whether the frame is high or low priority, a port vector identifying each MAC port to which the data frame should be sent, a receiving port number, Non-set, VLAN information, a vector identifying each MAC port that should contain VLAN information during transmission, an opcode, and a frame pointer. The format of this transmission descriptor is further described with reference to FIG. The port vector identifies MAC ports (eg, 10/100 MAC ports 1-12, Gigabit MAC ports, and / or expansion ports) for receiving and transmitting the data frame. The port vector FIFO 56 decodes the transmission descriptor containing the port vector and provides a frame pointer to the appropriate output queues 58 corresponding to the output MAC ports for receiving the data frame transmission. In other words, the port vector FIFO 56 provides a frame pointer for each port. If the output queues 58 give the frame pointer to a dequeuing block 76 (shown in FIG. 3), the dequeuing block 76 can be accessed from the external memory 36 via an external memory interface 44. Fetch the data frame identified by the port vector and provide the retrieved data frame to the appropriate transmit FIFO of the identified ports. If a data frame is to be provided to a management agent, a frame pointer is also provided to the management queue 68, which can be processed by the host CPU 32 via the CPU interface 50.

멀티카피 큐(60) 및 멀티카피 캐시(62)는 각 포트들로부터 전송된 데이터 프레임의 카피들 수의 트랙을 유지함으로써, 적절한 수의 데이터 프레임의 카피들이 외부 메모리(36)로부터 출력될 때 까지, 데이터 프레임이 외부 메모리(36)에서 오버라이트되지 않도록 보장한다. 일단 포트 벡터 FIFO(56)에 지정된 포트들의 수에 대응하는 카피들의 수가 출력되면, 프레임 포인터가 재요구 큐(66)에 전송된다. 이 재요구 큐(66)는 재요구될 필요가 있는 프레임 포인터들을 저장하고, 링크된 리스트 체인을 진행(walk)하여 버퍼들을 프리 포인터들로서 프리 버퍼 큐(64)에게 돌려준다. 프리 버퍼 큐(64)에게 돌려진 후, 프레임 포인터는 MAC 유닛(20) 또는 기가비트 MAC 유닛(24)에 의해 재이용될 수 있다. Multicopy queue 60 and multicopy cache 62 keep track of the number of copies of data frames transmitted from each port, until the appropriate number of copies of data frames are output from external memory 36. This ensures that data frames are not overwritten in the external memory 36. Once the number of copies corresponding to the number of ports specified in the port vector FIFO 56 is output, the frame pointer is sent to the re-request queue 66. This re-request queue 66 stores frame pointers that need to be reclaimed, walks through a linked list chain and returns the buffers to the pre-buffer queue 64 as free pointers. After being returned to the free buffer queue 64, the frame pointer can be reused by the MAC unit 20 or the gigabit MAC unit 24.

도 3은 본 발명의 예시적인 실시예에 따라 도 2의 스위치 서브시스템(42)을 보다 상세히 도시한다. 도 3에는 도 2의 멀티포트 스위치(12)의 다른 요소들이 재현되어, 이들 요소들에 대한 스위치 서브시스템(42)의 연결을 나타낸다. 3 illustrates the switch subsystem 42 of FIG. 2 in more detail in accordance with an exemplary embodiment of the present invention. In FIG. 3 other elements of the multiport switch 12 of FIG. 2 are reproduced to show the connection of the switch subsystem 42 to these elements.

도 3에 도시된 바와 같이, MAC 모듈(20)은 수신부(20a) 및 전송부(24b)를 포함한다. 이러한 수신부(24a) 및 전송부(24b)는 각각 IEEE 802.3 프로토콜에 따라 대응하는 수신 또는 전송 기능을 수행하도록 구성된 12개의 MAC 모듈들(수신부 및 전송부 각각에 대해 단지 2개 만이 도시되는바, 70a, 70b, 70c 및 70d로 번호가 부여된다)을 포함한다. MAC 모듈들(70c 및 70d)은 각각 모듈들(70a 및 70b)에 상보적으로, 10/100 Mb/s 스위치 포트들에 대한 전송 MAC 연산들을 수행한다. As shown in FIG. 3, the MAC module 20 includes a receiver 20a and a transmitter 24b. These receivers 24a and 24b each have twelve MAC modules (only two being shown for each receiver and transmitter, respectively) configured to perform corresponding reception or transmission functions in accordance with the IEEE 802.3 protocol. , 70b, 70c and 70d). MAC modules 70c and 70d perform transmit MAC operations for 10/100 Mb / s switch ports, complementary to modules 70a and 70b, respectively.

기가비트 MAC 포트(24)는 또한 수신부(24a) 및 전송부(24b)를 포함하고, 확장 포트(30)는 유사하게 수신부(30a) 및 전송부(30b)를 포함한다. 기가비트 MAC 포트(24) 및 확장 포트(30)는 또한 각 포트들에 대해 최적화된 수신 MAC 모듈들(72a 및 72b)을 갖는다. 또한, 기가비트 MAC 포트(24) 및 확장 포트(30)의 전송부들(24b 및 30b)은 각각 전송 MAC 모듈들(72c 및 72d)을 갖는다. MAC 모듈들은 대응하는 포트 상에서의 전이중 동작에 대해 구성되고, 기가비트 MAC 모듈들(72a 및 72c)은 기가비트 제안 표준 IEEE 드래프트 P802.3z에 따라 구성된다. Gigabit MAC port 24 also includes a receiver 24a and a transmitter 24b, and expansion port 30 similarly includes a receiver 30a and a transmitter 30b. Gigabit MAC port 24 and expansion port 30 also have receive MAC modules 72a and 72b optimized for each port. In addition, the transmitters 24b and 30b of the gigabit MAC port 24 and the expansion port 30 have transport MAC modules 72c and 72d, respectively. MAC modules are configured for full-duplex operation on the corresponding port, and gigabit MAC modules 72a and 72c are configured according to the gigabit proposed standard IEEE draft P802.3z.

각 수신 MAC 모듈들(70a, 70b, 72a 및 72b)은 대응하는 내부 수신 FIFO로부터 수신된 데이터를 외부 메모리(36) 및 룰 체커(40)로 전송하는 큐 논리(74)을 포함한다. 각 전송 MAC 모듈들(70c, 70d, 72c 및 72d)은 외부 메모리(36)로부터 대응하는 내부 전송 FIFO에 데이터를 전송하는 디큐잉 논리(76), 및 프리 버퍼 큐(64)로부터 프레임 포인터들을 페치하는 큐잉 논리(74)를 포함한다. 이 큐잉 논리(74)는 페치된 프레임 포인터를 이용하여, 수신 데이터를 외부 메모리 인터페이스 제어기(44)를 통해 외부 메모리(36)에 저장한다. 프레임 버퍼 포인터는, 수신된 데이터 프레임이 수신 FIFO에 의해 저장될 외부 메모리(36) 내의 위치를 지정한다. Each receiving MAC modules 70a, 70b, 72a, and 72b include queue logic 74 that transmits data received from the corresponding internal receive FIFO to external memory 36 and rule checker 40. Each transmitting MAC module 70c, 70d, 72c and 72d fetches frame pointers from the dequeuing logic 76 which transfers data from the external memory 36 to the corresponding internal transmit FIFO, and the free buffer queue 64. Queuing logic 74. This queuing logic 74 uses the fetched frame pointer to store received data to external memory 36 via external memory interface controller 44. The frame buffer pointer specifies the location in external memory 36 where the received data frame will be stored by the receive FIFO.

외부 메모리 인터페이스(44)는 어떠한 스위치 포트의 위치 포트의 큐잉 논리(74) 또는 디큐잉 논리(76)에 의한 외부 메모리(36)에 대한 메모리 액세스를 제어하는 스케쥴러(80), 및 외부 메모리(36)에 대해 판독 및 기록 동작들을 수행하는 SSRAM 인터페이스(78)를 포함한다. 특히, 멀티포트 스위치(12)는 비-블록킹 스위치로서 동작하도록 구성되는바, 여기서 네트워크 데이터는 10, 100 또는 1000Mb/s의 각각의 전송 속도로 스위치 포트들로부터 수신되고 출력된다. 이에 따라, 스케쥴러(80)는 다른 포트들에 의한 액세스를 제어함으로써 외부 메모리(36)의 대역폭의 이용을 최적화한다. The external memory interface 44 includes a scheduler 80 that controls memory access to the external memory 36 by the queuing logic 74 or dequeuing logic 76 of the location port of any switch port, and the external memory 36 SSRAM interface 78 for performing read and write operations for the < RTI ID = 0.0 > In particular, the multiport switch 12 is configured to operate as a non-blocking switch, where network data is received and output from the switch ports at respective transmission rates of 10, 100 or 1000 Mb / s. Accordingly, the scheduler 80 optimizes the use of the bandwidth of the external memory 36 by controlling access by other ports.

각 수신 MAC은 대응하는 스위치 포트로부터 프레임의 일부를 수신하게 되면, 이를 내부 FIFO에 저장하고, FIFO의 크기는 스케쥴러 시간 슬롯들 사이에 도달하는 프레임 데이터를 저장하는 데에 충분하다. 대응하는 큐잉 논리(74)는 프레임 포인터를 얻고 외부 메모리 인터페이스(44)에 기록 요구를 보낸다. 스케쥴러(80)는 기록 요구를, 큐잉 논리(74)로부터의 다른 기록 요구들 또는 디큐잉 논리(76)로부터의 어떠한 판독 요구들과 함께 스케쥴링하고, 요구하는 큐잉 논리(74)(또는 디큐잉 논리(76))에 대해 허가(grant)를 발생시킴으로써, 스케쥴링된 이벤트(즉, 슬롯)로 전송을 개시한다. 이후, 64 비트의 프레임 데이터가, 할당된 슬롯 동안의 직접 메모리 액세스(DMA) 트랜잭션으로, 수신 FIFO로부터 기록 데이터 버스(69a)를 통해 외부 메모리(36)에 전송된다. 프레임 데이터는 프리 버퍼 풀(pool)(64)로부터 얻어진 버퍼 포인터에 의해 지시된 위치에 저장되지만, 하기 설명되는 바와 같이, 다수의 다른 버퍼들을 이용하여 데이터 프레임들을 저장할 수 있다. When each receiving MAC receives a portion of a frame from the corresponding switch port, it stores it in an internal FIFO, and the size of the FIFO is sufficient to store frame data arriving between scheduler time slots. Corresponding queuing logic 74 obtains a frame pointer and sends a write request to external memory interface 44. The scheduler 80 schedules the write request along with other write requests from the queuing logic 74 or any read requests from the dequeuing logic 76 and requests and requests the queuing logic 74 (or dequeuing logic). (76) initiate a transfer in the scheduled event (ie, slot) by issuing a grant. Thereafter, 64-bit frame data is transferred from the receive FIFO to the external memory 36 via the write data bus 69a in a direct memory access (DMA) transaction during the assigned slot. The frame data is stored at the location indicated by the buffer pointer obtained from the free buffer pool 64, but as described below, a number of different buffers can be used to store the data frames.

룰 체커(40)는 또한 기록 데이터 버스(69a) 상의 DMA 기록 전송을 모니터(즉, 스누프)함으로써 프레임 포인터 및 헤더 정보(소스 어드레스, 목적지 어드레스, VLAN 태그 정보 등을 포함한다)를 수신한다. 룰 체커(40)는 헤더 정보를 이용하여 전송 결정을 행하고, 포트 벡터를 포함하는 전송 기술자의 형태로 전송 명령을 생성한다. 포트 벡터는 프레임이 전송되어야 하는 각 출력 포트에 대해 설정된 비트를 갖는다. 만일 수신된 프레임이 유니카피 프레임이라면, 룰 체커(40)에 의해 생성된 포트 벡터에는 단지 1개의 비트 만이 설정된다. 포트 벡터에 설정된 단일 비트는 포트들중 특정한 하나에 대응한다. The rule checker 40 also receives frame pointer and header information (including source address, destination address, VLAN tag information, etc.) by monitoring (i.e. snooping) the DMA write transfer on the write data bus 69a. The rule checker 40 makes a transmission decision using the header information, and generates a transmission command in the form of a transmission descriptor including a port vector. The port vector has a bit set for each output port to which a frame should be sent. If the received frame is a unicopy frame, only one bit is set in the port vector generated by the rule checker 40. The single bit set in the port vector corresponds to a particular one of the ports.

룰 체커(40)는 포트 벡터 및 프레임 포인터를 포함하는 전송 기술자를 포트 벡터 FIFO(56)에 출력한다. 포트 벡터 FIFO(56)는 포트 벡터를 조사하여, 어느 특정의 출력 큐가 관련된 프레임 포인터를 수신해야 하는 지를 결정한다. 포트 벡터 FIFO(56)는 프레임 포인터를 적절한 큐(58 그리고/또는 68)의 상부에 놓는다. 이는 프레임의 전송을 큐잉한다. The rule checker 40 outputs a transmission descriptor including the port vector and the frame pointer to the port vector FIFO 56. The port vector FIFO 56 examines the port vector to determine which particular output queue should receive the associated frame pointer. The port vector FIFO 56 places the frame pointer on top of the appropriate cues 58 and / or 68. This queues the transmission of the frame.

도 3에 도시된 바와 같이, 각 전송 MAC 유닛들(70c, 70d, 72d 및 72c)은 각각 관련된 출력 큐들(58a, 58b, 58c 및 58d)을 갖는다. 바람직한 실시예에서, 각 출력 큐들(58)은 높은 우선순위 프레임들에 대해서는 높은 우선순위 큐를 갖고, 낮은 우선순위 프레임들에 대해서는 낮은 우선순위 큐를 갖는다. 높은 우선순위 프레임들은 보증된 액세스 지연 시간을 필요로 하는 프레임들, 예를 들어 멀티미디어 용도를 위한 프레임들 또는 관리 MAC 프레임들에 대해 이용된다. FIFO 타입의 출력 큐들(58)에 저장된 프레임 포인터들은 각 전송 MAC 유닛들에 대한 디큐잉 논리(76)에 의해 처리된다. 어떠한 시점에서, 프레임 포인터는 출력 큐(58), 예를 들어 기가비트 전송 MAC(72c)에 대한 출력 큐(58d)의 바닥에 도달한다. 전송 기가비트 포트(24b)에 대한 디큐잉 논리(76)는 대응하는 기가비트 포트 출력 큐(58d)로부터 프레임 포인터를 취해, 이 프레임 포인터에 의해 지정되는 메모리 위치에서 외부 메모리(36)로부터 프레임 데이터를 판독하도록 스케쥴러(80)에게 요구를 발행(issue)한다. 스케쥴러(80)는 요구를 스케쥴링하고, 전송 기가비트 포트(24b)의 디큐잉 논리(76)에게 DMA 판독을 개시할 수 있는 허가를 발행한다. 이러한 허가에 응답하여, 디큐잉 논리(76)는 프레임 포인터에 의해 지정되는 외부 메모리(36)의 위치로부터 DMA 트랜잭션으로 (판독 버스(69b)를 따라) 프레임 데이터를 판독하고, 전송 기가비트 MAC(72c)에 의한 전송을 위해 내부 전송 FIFO에 프레임 데이터를 저장한다. 전송 기술자가 유니카피 전송을 지정한다면, 프레임 포인터는 전체 프레임 데이터를 전송 FIFO 내에 기록한 다음에 프리 버퍼 큐(64)로 되돌려진다. As shown in Fig. 3, each transmitting MAC unit 70c, 70d, 72d and 72c has associated output queues 58a, 58b, 58c and 58d, respectively. In the preferred embodiment, each output queue 58 has a high priority queue for high priority frames and a low priority queue for low priority frames. High priority frames are used for frames that require guaranteed access delay time, for example frames for multimedia purposes or management MAC frames. Frame pointers stored in FIFO type output queues 58 are processed by dequeuing logic 76 for each transmitting MAC unit. At some point, the frame pointer reaches the bottom of the output queue 58, for example the output queue 58d for the gigabit transmit MAC 72c. The dequeuing logic 76 for the transmit gigabit port 24b takes a frame pointer from the corresponding gigabit port output queue 58d and reads frame data from the external memory 36 at the memory location specified by this frame pointer. It issues a request to the scheduler 80 to do so. The scheduler 80 schedules the request and issues a permission to the dequeuing logic 76 of the transmit gigabit port 24b to initiate a DMA read. In response to this permission, the dequeuing logic 76 reads frame data (along the read bus 69b) from the location of the external memory 36 specified by the frame pointer, along the read bus 69b, and transmits the gigabit MAC 72c. Frame data is stored in the internal transmit FIFO for transmission by. If the transfer descriptor specifies a unicopy transfer, the frame pointer is returned to the free buffer queue 64 after writing the entire frame data into the transfer FIFO.

멀티카피 전송은, 포트 벡터가 다수의 설정된 비트들(이는 데이터 프레임의 전송원이 되는 다수의 포트들을 지정한다)을 갖는 것을 제외하고는 유니카피 전송과 유사하다. 프레임 포인터는 적절한 각 출력 큐들(58) 내에 놓여지고, 적절한 전송 MAC 유닛들(20b, 24b 그리고/또는 30b)에 의해 전송된다. Multicopy transmission is similar to unicopy transmission except that the port vector has a number of configured bits (which specify a number of ports that are the source of the data frame). The frame pointer is placed in the appropriate respective output queues 58 and transmitted by the appropriate transmitting MAC units 20b, 24b and / or 30b.

프리 버퍼 풀(64), 멀티카피 큐(60), 재요구 큐(66) 및 멀티카피 캐시(62)는 프레임 포인터들의 이용, 및 데이터 프레임이 자신의 지정된 출력 포트(들)에 전송된 후의 프레임 포인터들의 재이용을 관리하는 데에 이용된다. 특히, 디큐잉 논리(76)는, 버퍼 내용들이 적절한 전송 FIFO에 카피된 후, 유니카피 프레임들에 대한 프레임 포인터들을 프레임 버퍼 큐(64)에 보낸다. The free buffer pool 64, the multicopy queue 60, the request queue 66 and the multicopy cache 62 use the frame pointers and the frames after the data frames are sent to their designated output port (s). Used to manage reuse of pointers. In particular, dequeuing logic 76 sends frame pointers for unicopy frames to frame buffer queue 64 after the buffer contents are copied to the appropriate transmit FIFO.

멀티카피 프레임들에 대해, 포트 벡터 FIFO(56)는 1개 이상의 출력 큐(58)에게 동일한 프레임 포인터의 다수의 카피들을 제공하는바, 각 프레임 포인터는 제로로 설정된 유니카피 비트를 갖는다. 포트 벡터 FIFO(56)는 또한 프레임 포인터 및 카피 카운트를 멀티카피 큐(60)에 카피한다. 이 멀티카피 큐(60)는 멀티카피 캐시(62)에 카피 카운트를 기록한다. 멀티카피 캐시(62)는 외부 메모리(36)의 각 버퍼(즉, 각 프레임 포인터)에 대해 단일의 카피 카운트를 갖는 랜덤 액세스 메모리이다. For multicopy frames, port vector FIFO 56 provides multiple copies of the same frame pointer to one or more output queues 58, each frame pointer having a unicopy bit set to zero. The port vector FIFO 56 also copies the frame pointer and copy count to the multicopy queue 60. This multicopy queue 60 writes a copy count to the multicopy cache 62. Multicopy cache 62 is a random access memory having a single copy count for each buffer (ie, each frame pointer) of external memory 36.

일단 디큐잉 논리(76)가 페치된 프레임 포인터에 기초하여 특정한 출력 포트에 대한 프레임 데이터를 검색하고 전송 FIFO에 프레임 데이터를 저장하면, 디큐잉 논리(76)는 유니카피 비트가 1로 설정되었는 지의 여부를 체크한다. 유니카피 비트가 1로 설정되어 있으면, 프레임 포인터는 프리 버퍼 큐(64)로 되돌려진다. 유니카피 비트가 멀티카피 프레임 포인터를 나타내는 제로로 설정되어 있으면, 디큐잉 논리(76)는 -1의 카피 카운트를 갖는 프레임 포인터를 멀티카피 큐(60)에 기록한다. 이 멀티카피 큐(60)는 멀티카피 캐시(62)에 저장된 엔트리에 카피 카운트를 더한다. Once dequeuing logic 76 retrieves the frame data for a particular output port based on the fetched frame pointer and stores the frame data in the transmit FIFO, dequeuing logic 76 determines whether the unicopy bit is set to one. Check whether or not. If the unicopy bit is set to 1, the frame pointer is returned to the free buffer queue 64. If the unicopy bit is set to zero indicating a multicopy frame pointer, the dequeuing logic 76 writes a frame pointer with a copy count of -1 to the multicopy queue 60. This multicopy queue 60 adds a copy count to entries stored in the multicopy cache 62.

프레임 포인터에 대한 멀티카피 캐시(62) 내의 카피 카운트가 제로에 이르면, 프레임 포인터는 재요구 큐(66)에 전달된다. 단일 데이터 프레임을 다수의 버퍼 메모리 위치들 내에 저장하는 데에 다수의 프레임 포인터들이 이용될 수 있기 때문에, 프레임 포인터들은 프레임 포인터들의 링크된 리스트(즉, 체인)를 형성하도록 서로 참조되어, 저장된 데이터 프레임을 완전하게 식별한다. 재요구 큐(66)는 프레임 포인터들에 의해 식별되는 버퍼 위치들의 체인을 이동(traverse)하여, 프레임 포인터를 프리 버퍼 큐(64)에 전달한다. When the copy count in the multicopy cache 62 for the frame pointer reaches zero, the frame pointer is forwarded to the request queue 66. Because multiple frame pointers can be used to store a single data frame in multiple buffer memory locations, the frame pointers are referenced to each other to form a linked list (ie, a chain) of frame pointers, thereby storing the stored data frame. Fully identify The request queue 66 traverses the chain of buffer locations identified by the frame pointers, passing the frame pointer to the free buffer queue 64.

스위치 아키텍쳐에 대한 상기 설명은 패킷 교환 네트워크에서의 스위치 동작의 개요를 제공한다. 이하, 멀티포트 스위치(12)에서 구현되는 본 발명의 특징들에 대해 보다 상세히 설명한다. The above description of the switch architecture provides an overview of switch operation in a packet switched network. Hereinafter, features of the present invention implemented in the multiport switch 12 will be described in more detail.

내부 룰 체커Internal rule checkers

본 발명은 네트워크 스위치에서 트렁킹 기능을 제공하는 것에 관한 것으로서, 특히 단일 네트워크 라인을 형성하기 위해 다수의 포트들을 트렁킹하는 것에 관한 것이다. 먼저, IRC(40)에 대해 설명한 다음, 멀티포트 스위치(12)에서의 트렁킹 방법 및 장치에 대해 상세히 설명한다. The present invention relates to providing a trunking function in a network switch, and more particularly to trunking multiple ports to form a single network line. First, the IRC 40 will be described, and the trunking method and apparatus in the multiport switch 12 will be described in detail.

상기 설명한 바와 같이, 스위치 서브시스템(42)은, 프레임들을 수신한 다음 적절한 출력 포트들에 전송하는 스위칭 논리를 제공한다. 하지만, 전송 결정은 멀티포트 스위치(12) 상에 위치하는 IRC(40)에 의해 행해진다. 도 4에 도시된 본 발명의 일 실시예에 따르면, IRC(40)는 4개의 기능적인 논리 블록들, 즉 유입 룰 엔진(ingress rules engine)(200), 소스 어드레스(SA) 룩업 엔진(210), 목적지 어드레스(DA) 룩업 엔진(220) 및 유출 룰 엔진(egress rules engine)(230)을 포함한다. 예시적인 실시예에서, 이러한 4개의 엔진들(200, 210, 220 및 230)은 개별적인 논리 장치들로서 도시된다. 하지만, 대안적인 구성들에서, 이러한 엔진들은 단일 논리 장치에 결합될 수 있다. As described above, the switch subsystem 42 provides switching logic that receives the frames and then sends them to the appropriate output ports. However, the transmission decision is made by the IRC 40 located on the multiport switch 12. According to one embodiment of the invention shown in FIG. 4, the IRC 40 includes four functional logic blocks: an ingress rules engine 200, a source address (SA) lookup engine 210. Destination address (DA) lookup engine 220 and egress rules engine 230. In an exemplary embodiment, these four engines 200, 210, 220, and 230 are shown as separate logic devices. However, in alternative configurations, these engines may be combined into a single logic device.

도 4에 도시되는 예시적인 실시예에서, IRC(40)는 어드레스 테이블(82)을 포함한다. 대안적인 실시예들에서, 이 어드레스 테이블(82)은 멀티포트 스위치(12)의 다른 부분의 내의 IRC(40)의 외부에, 또는 심지어 멀티포트 스위치(12) 외부에 위치될 수 있다. In the example embodiment shown in FIG. 4, IRC 40 includes an address table 82. In alternative embodiments, this address table 82 may be located outside of the IRC 40, or even outside the multiport switch 12 within other portions of the multiport switch 12.

예시적인 실시예에 따르면, 어드레스 테이블(82)은 4096개의 이용자 어드레스들 및 64개의 고유한 가상 국부 영역 네트워크(VLAN)들에 대한 능력(capability)을 지원한다. 하지만, 지원되는 어드레스들과 VLAN들의 수는 테이블 크기를 확장함으로써 증가할 수 있다. VLAN들은, 방송 트래픽을 VLAN의 "내부"에 유지하는 "방송 도메인"을 제공한다. 예를 들어, 특정한 VLAN은 조직의 하이 레벨에 이용자들의 그룹을 포함할 수 있다. 이러한 이용자들의 그룹에 데이터를 전송할 때, 이 데이터는 이 특정 그룹과 관련된 특정한 VLAN 식별자를 포함함으로써, 이들 이용자들 만이 데이터를 수신하도록 보장할 수 있다. 이러한 VLAN 그룹화는 보다 큰 네트워크 내의 "서브 네트워크들"로서 고려될 수 있다. According to an exemplary embodiment, the address table 82 supports the capability for 4096 user addresses and 64 unique virtual local area networks (VLANs). However, the number of supported addresses and VLANs can be increased by extending the table size. VLANs provide a "broadcast domain" that keeps broadcast traffic "inside" of a VLAN. For example, a particular VLAN may include a group of users at a high level of organization. When sending data to a group of such users, this data may include a specific VLAN identifier associated with this particular group, thereby ensuring that only these users receive the data. This VLAN grouping can be considered as "sub networks" in a larger network.

도 5는 IRC 어드레스 테이블(82)의 구성을 나타낸다. 이 IRC 어드레스 테이블(82)은 4096 엔트리들의 어레이를 포함한다. 첫 번째의 "n"개의 엔트리들(92)은 "빈 엔트리들(bin entries)"이라 불려지고 "0"부터 "n-1"까지의 어드레스들을 갖는다. 나머지 엔트리들(94)은 "힙 엔트리들(heap entries)"이라 불려지고 "n"부터 "4095"까지의 어드레스들을 갖는다. 각 테이블 엔트리들은 72 비트 어드레스 엔트리 필드 및 12 비트 "다음 포인터" 필드를 포함한다. 5 shows the configuration of the IRC address table 82. This IRC address table 82 contains an array of 4096 entries. The first "n " entries 92 are called " bin entries " and have addresses from " 0 " to " n-1 ". The remaining entries 94 are called "heap entries" and have addresses from "n" to "4095". Each table entry includes a 72 bit address entry field and a 12 bit "next pointer" field.

도 6은 도 5에 도시한 각 84 비트 테이블 엔트리의 구성을 나타낸다. 히트 비트(hit bit)는 어드레스 엔트리 "에이징(aging)"에 이용되어, 미리 정해진 시간 동안 이용되지 않는 엔트리들을 어드레스 테이블(82)로부터 삭제한다. 스태틱 비트(static bit)는 어드레스 엔트리의 삭제를 막는 데에 이용된다. 트래픽 포획 비트(traffic capture bit)는 트래픽 포획 소스 및 목적지 MAC 어드레스들을 식별하여, MAC 대화를 관리 큐(68)에 반영(mirror)한다. FIG. 6 shows the configuration of each 84-bit table entry shown in FIG. Hit bits are used for the address entry “aging” to delete entries from the address table 82 that are not used for a predetermined time. Static bits are used to prevent deletion of address entries. The traffic capture bit identifies the traffic capture source and destination MAC addresses, and mirrors the MAC conversation to the management queue 68.

VLAN 인덱스 필드는 12 비트 VLAN 식별자(ID)를 참조하는 데에 이용되는 6 비트 필드이다. 도 4에 나타낸 VLAN 인덱스-VLAN ID 테이블(86)은 맵핑 조합들을 포함한다. 스위치(12)는 태그된 프레임 및 태그되지 않은 프레임을 모두 수신한다. 이 스위치(12)가 태그되지 않은, 즉 VLAN 태그 정보가 없는 데이터 프레임들을 수신하면, IRC(40)는 프레임이 수신되는 수신 포트에 기초하여, 도 4에 나타낸 VLAN 포트-인덱스 테이블(88)로부터 VLAN 인덱스를 할당한다. VLAN 인덱스-ID 테이블(86) 및 VLAN 포트-인덱스 테이블(88)은 구성 및 상태 레지스터들(52) 내에 위치된다. 하지만, 대안적인 구성들에서, 이 테이블들(86과 88)은 IRC(40) 내에 위치될 수 있다. The VLAN Index field is a 6 bit field used to refer to a 12 bit VLAN identifier (ID). The VLAN index-VLAN ID table 86 shown in FIG. 4 includes mapping combinations. The switch 12 receives both tagged and untagged frames. If this switch 12 receives untagged data frames, i.e. without VLAN tag information, then the IRC 40, from the VLAN port-index table 88 shown in Figure 4, based on the receiving port from which the frame is received. Assign a VLAN index. VLAN index-ID table 86 and VLAN port-index table 88 are located in configuration and status registers 52. However, in alternative configurations, these tables 86 and 88 may be located in IRC 40.

포트 벡터는 15 비트 필드로서, 프레임이 전송되어야 하는 포트(들)을 식별하는 벡터를 갖는 전송 기술자를 제공한다. The port vector is a 15 bit field that provides a transmission descriptor with a vector identifying the port (s) to which the frame should be transmitted.

MAC 어드레스 필드는 48 비트 필드로서, 소스 어드레스 및 목적지 어드레스 모두에 대한 어드레스들을 포함한다. 이러한 어드레스들은 유니 캐스트, 멀티 캐스트 또는 방송이 될 수 있다. 개별/집단(I/G) 비트가 또한 MAC 어드레스 필드에 포함된다. The MAC address field is a 48 bit field and contains addresses for both the source address and the destination address. These addresses can be unicast, multicast or broadcast. Individual / Group (I / G) bits are also included in the MAC address field.

본 발명의 예시적인 실시예에서, 호스트 CPU(32)는 관리 엔티티로서 기능하고, CPU IF(50)를 통해 IRC(40)에 연결된다. 대안적으로, 관리 MAC는 CPU IF(50)에 연결되어 관리 엔티티로서 기능할 수 있다. In an exemplary embodiment of the invention, the host CPU 32 functions as a management entity and is connected to the IRC 40 via the CPU IF 50. Alternatively, the management MAC may be connected to the CPU IF 50 and function as a management entity.

호스트 CPU(32)는 어드레스 테이블(82)의 값들의 초기화를 담당한다. 전원을 넣으면, 호스트 CPU(32)는 VLAN 구성들을 포함하는 네트워크 구성에 기초하여 어드레스 테이블(82)에 값들을 적재한다. IRC(40)는 어드레스 테이블(82)의 특정 필드들을 이용하여, 프레임들이 스위치(12)에 수신될 때 프레임 전송을 결정을 행한다. 보다 구체적으로, IRC(40)는 엔진들(200-300)을 이용하여, 프레임 전송 정보를 찾아 어드레스 테이블(82)을 서치하고, 포트 벡터 FIFO(56)에 출력하기 위한 전송 기술자를 생성한다. The host CPU 32 is responsible for initializing the values of the address table 82. When powered on, the host CPU 32 loads values into the address table 82 based on the network configuration including the VLAN configurations. The IRC 40 uses specific fields of the address table 82 to make a frame transmission when frames are received at the switch 12. More specifically, the IRC 40 uses the engines 200-300 to find frame transmission information, search the address table 82, and generate a transmission descriptor for outputting to the port vector FIFO 56.

상기 설명한 바와 같이, 엔진들(200-230)은 개별적인 논리 엔진들이기 때문에, 데이터 프레임들을 독립적으로 처리할 수 있으며, 결과적으로 한 번에 한 프레임을 처리하는 시스템들과 비교하여 데이터 처리량을 증가시킨다. 즉, 각 논리 엔진은 각각의 다른 논리 엔진들과 동시에, 서로 다른 데이터 프레임에 대해 자신의 각 처리를 수행할 수 있다. 각 논리 엔진의 동작에 대해서는 하기에서 설명한다. As described above, because the engines 200-230 are separate logic engines, they can process data frames independently, resulting in increased data throughput compared to systems that process one frame at a time. In other words, each logic engine can perform its own processing on different data frames simultaneously with the other logic engines. The operation of each logic engine is described below.

유입 룰 엔진(200)은 들어오는 데이터 프레임들에 대해 다양한 전 처리(pre-processing) 기능들을 수행한다. 예를 들어, 유입 룰 엔진(200)은 프레임이 수신되었을 때 대응하는 MAC가 어떠한 전송 에러들을 검출했는 지의 여부를 조사한다. 또한, 유입 룰 엔진(200)은 수신된 프레임의 소스 어드레스를 조사하여, 개별/집단(I/G) 비트가 설정되었는 지의 여부를 결정한다. I/G 비트가 설정되어 있으면, 유입 룰 엔진(200)은 프레임이 에러들을 가지고 수신되었던 것 처럼 이 프레임을 처리한다. 즉, 수신 에러가 발생하면, 유입 룰 엔진(200)은 프레임을 폐기시키게 하는 널 포트 벡터(null port vector)를 갖는 전송 기술자를 생성한다. 대안적으로, 유입 룰 엔진(200)은 진단 목적으로 호스트 CPU(32)에 에러 프레임을 전송할 수 있다. The inflow rule engine 200 performs various pre-processing functions on incoming data frames. For example, the ingress rule engine 200 examines whether any corresponding errors were detected by the corresponding MAC when a frame was received. Further, the inflow rule engine 200 examines the source address of the received frame to determine whether individual / group (I / G) bits are set. If the I / G bit is set, the inflow rule engine 200 processes this frame as if the frame had been received with errors. In other words, when a reception error occurs, the inflow rule engine 200 generates a transmission descriptor having a null port vector that causes the frame to be discarded. Alternatively, the inflow rule engine 200 may send an error frame to the host CPU 32 for diagnostic purposes.

또한, 유입 룰 엔진(200)은 프레임의 MAC DA를 조사하여, 이 프레임이 관리 엔티티, 예를 들어 호스트 CPU(32)에 보내져야 하는 지의 여부를 결정한다. 구체적으로, 유입 룰 엔진(200)은 브리지 프로토콜 데이터 유닛(BPDU)들, 일반 속성 등록 프로토콜(GARP) 프레임, MAC 제어 프레임들 및 물리적 MAC 어드레스를 찾는다. 유입 룰 엔진(200)은 자신들의 특정한 목적지 어드레스 정보에 기초하여 이러한 타입의 프레임들을 식별한다. Also, the inflow rule engine 200 examines the MAC DA of the frame to determine whether the frame should be sent to a management entity, for example, the host CPU 32. Specifically, the ingress rule engine 200 finds bridge protocol data units (BPDUs), general attribute registration protocol (GARP) frames, MAC control frames, and physical MAC addresses. The ingress rule engine 200 identifies these types of frames based on their specific destination address information.

선택적으로, 유입 룰 엔진(200)은 멀티포트 스위치(12)가 수신 포트와 관련되는 VLAN에 속하지 않는 프레임을 전송하는 것을 막기 위해 VLAN 유입 필터링을 수행한다. 유입 룰 엔진(200)은 어떤 VLAN이 각 포트와 관련되는 지를 나타내는 VLAN 멤버 설정 테이블을 액세스하고, 특정 프레임이 수신 포트와 관련된 VLAN에 속하는 지의 여부를 결정한다. 프레임이 유입 필터링에 실패하면, 유입 룰 엔진(200)은 SA 또는 DA 룩업 또는 유입 룰 동작들을 수행하지 않으면서, 널 포트 벡터를 갖는 전송 기술자를 생성한다. Optionally, the ingress rule engine 200 performs VLAN ingress filtering to prevent the multiport switch 12 from transmitting frames that do not belong to the VLAN associated with the ingress port. The ingress rule engine 200 accesses a VLAN member configuration table that indicates which VLANs are associated with each port and determines whether a particular frame belongs to a VLAN associated with a receiving port. If the frame fails ingress filtering, the ingress rule engine 200 generates a transmission descriptor with a null port vector, without performing SA or DA lookup or inflow rule operations.

유입 룰 엔진(200)에 의한 처리 후, IRC(40)는 어드레스 테이블(82)의 SA 및 DA 서치를 수행한다. 멀티포트 스위치(12)에 의해 다수의 데이터 프레임들이 동시에 수신되기 때문에, 이 멀티포트 스위치(12)는 프레임 전송 결정을 비교적 빠르게 행해야 한다. 따라서, 본 발명의 예시적인 실시예에서는, 해시 방식(hashing scheme)을 이용하여 어드레스 엔트리들의 서브세트 만을 서치하는바, 이에 대해서는 하기에서 설명한다. 도 5의 메모리 구조는 인덱스된 구성을 제공하는바, 여기에서는 소정의 네트워크 어드레스가 대응하는 빈에 할당될 것이다. 즉, 각 빈 엔트리(96)는 다수의 테이블 엔트리들(즉, 힙 엔트리들)(98)을 참조하도록 구성된다. 이에 따라, SA 룩업 엔진(210)은 먼저 해시 키에 의해 지정되는 특정 빈(96)을 액세스한 다음, 적절한 정합의 위치를 알아내기 위해 대응하는 빈 내에서 (즉, 이에 의해 참조되는) 엔트리들을 서치함으로써 어드레스의 서치를 수행한다. After processing by the inflow rule engine 200, the IRC 40 performs SA and DA searches of the address table 82. Since multiple data frames are simultaneously received by the multiport switch 12, this multiport switch 12 must make frame transmission decisions relatively quickly. Thus, in an exemplary embodiment of the present invention, only a subset of address entries is searched using a hashing scheme, which is described below. The memory structure of Figure 5 provides an indexed configuration, where a predetermined network address will be assigned to the corresponding bin. That is, each empty entry 96 is configured to reference a number of table entries (ie, heap entries) 98. Accordingly, the SA lookup engine 210 first accesses the particular bin 96 specified by the hash key, and then enters entries (i.e., referenced by) within the corresponding bin to locate the proper match. The search is performed by searching.

각 빈 엔트리(96)는 SA 룩업 엔진(210)에 의한 어드레스 테이블(82) 내의 특정 어드레스를 찾기 위한 서치의 시작점이다. 빈 엔트리는 어떠한 어드레스도 참조하지 않고(즉, 비어있음), 빈 엔트리 위치 내의 단지 1개의 어드레스 만을 참조하거나, 또는 링크된 리스트 체인 구조를 이용하여 다수의 어드레스들을 참조할 수 있다. Each empty entry 96 is the starting point of a search for finding a particular address in the address table 82 by the SA lookup engine 210. An empty entry may not refer to any address (ie is empty), may refer to only one address within an empty entry location, or may refer to multiple addresses using a linked list chain structure.

도 7은 다른 수의 테이블 엔트리들을 빈 엔트리들을 나타낸다. 빈 엔트리들(96) 및 힙 엔트리들(98) 각각은 72 비트 어드레스 엔트리 및 12 비트 "다음 포인터" 필드를 포함한다. 빈 엔트리(96)과 관련된 "다음 포인터" 필드는 링크된 리스트 어드레스들의 체인의 다음 엔트리의 위치를 식별한다. 예를 들어, 도 7의 빈 3(96d)은 어떠한 관련된 테이블 엔트리도 갖지 않는다. 이 경우, 72 비트 엔트리의 내용들은 중요하지 않고, 빈의 대응하는 "다음 포인터" 필드는 대응하는 빈에 대해 어떠한 엔트리도 없음을 나타내는 "1"의 값을 가질 것이다. 만일 빈 1(96b)과 같은 빈이 단일 테이블 엔트리를 포함하면, 빈 엔트리는 자신의 어드레스 엔트리 필드의 단일 어드레스에 대한 스위칭 논리 데이터를 저장하고, 체인에 더 이상의 추가적인 어드레스 엔트리가 없음을 나타내는 값 "0"을 "다음 포인터"에 저장한다. 하지만, 빈 0(96a)은 체인의 다음 엔트리의 위치를 식별하기 위해 "다음 포인터" 필드를 이용하여 4개의 어드레스들을 참조한다. 빈의 부가적인 엔트리들(96b-96d)은 도 7에 나타낸 바와 같이 선형 리스트로 링크된다. 따라서, 빈 0의 제 1 엔트리는 빈 엔트리(96a)의 어드레스 엔트리 필드에 저장되고, 다음 엔트리(힙 엔트리(98a))는 빈 엔트리(96a)의 다음 포인터 필드의 어드레스 엔트리 "a"에 의해 참조된다. 7 shows empty entries with different numbers of table entries. Each of the empty entries 96 and heap entries 98 includes a 72 bit address entry and a 12 bit “next pointer” field. The "Next Pointer" field associated with the empty entry 96 identifies the location of the next entry in the chain of linked list addresses. For example, bin 3 96d in FIG. 7 does not have any associated table entry. In this case, the contents of the 72-bit entry are not important and the corresponding "next pointer" field of the bin will have a value of "1" indicating that there is no entry for the corresponding bin. If a bin such as bin 1 (96b) contains a single table entry, then the bin entry stores the switching logic data for a single address in its address entry field, and a value "0 indicating no more address entries in the chain. Stores "in the" next pointer ". However, bin 0 96a refers to four addresses using the "Next Pointer" field to identify the location of the next entry in the chain. Additional entries 96b-96d of the bin are linked into a linear list as shown in FIG. 7. Thus, the first entry of bin 0 is stored in the address entry field of bin entry 96a, and the next entry (heap entry 98a) is referenced by address entry "a" of the next pointer field of bin entry 96a. do.

SA 룩업 엔진(210)은 수신된 데이터 프레임의 소스 어드레스 및 VLAN 인덱스와 관련된 엔트리들을 찾기 위해 위해 IRC 어드레스 테이블(82)의 해시 서치를 수행한다. 도 8은 본 발명의 일 실시예에 따라 SA 룩업 엔진(210)과 함께 이용되는 해시 함수 회로(100)를 나타낸 블록도이다. 이 해시 함수 회로(100)는 일련의 AND 게이트들(102), 일련의 배타적 OR (XOR) 게이트들(104), 및 시프트 레지스터(106)를 포함한다. 사용자 프로그램가능 레지스터(HASHPOLY)(108)에 저장되는 사용자 지정 해시 함수는 해시 함수 회로(100)에 의해 이용되는 해시 다항식을 정의하는 12 비트 값을 포함한다. 본 발명의 해싱 함수에 대한 예시적인 해시 다항식들은 0100 1000 1101의 HASHPOLY를 갖는 x12+x10+x7+x3+x2+1, 0100 0010 1001의 HASHPOLY를 갖는 x12+x10+x5+x3+1 및 0101 1001 0101의 HASHPOLY를 갖는 x12+x10+x8+x7+x4+x2+1이다. x12 항은 항상 1인 것으로 가정하기 때문에, HASHPOLY 레지스터(108)에 저장되지 않는다. 다른 다항식들 또한 특정한 설계 요건에 따라서 HASHPOLY에 이용될 수 있다. SA lookup engine 210 performs a hash search of IRC address table 82 to find entries associated with the source address and VLAN index of the received data frame. 8 is a block diagram illustrating a hash function circuit 100 used with the SA lookup engine 210 in accordance with one embodiment of the present invention. This hash function circuit 100 includes a series of AND gates 102, a series of exclusive OR (XOR) gates 104, and a shift register 106. The user specified hash function stored in the user programmable register (HASHPOLY) 108 includes a 12 bit value that defines the hash polynomial used by the hash function circuit 100. An exemplary hash polynomial for the hashing function of the present invention are 0100 x 1000 12 1101 HASHPOLY having a + x 10 + x 7 + x 3 + x 2 +1, x having a HASHPOLY of 0100 0010 1001 12 + x 10 + x X 12 + x 10 + x 8 + x 7 + x 4 + x 2 +1 with a HASHPOLY of 5 + x 3 +1 and 0101 1001 0101. Since the x 12 term is always assumed to be 1, it is not stored in the HASHPOLY register 108. Other polynomials can also be used in HASHPOLY depending on the specific design requirements.

해시 함수 회로(100)는 사용자 지정 해시 함수에 따라 데이터 패킷의 소스 어드레스를 이용하여 해시 키를 생성한다. 처음에, IRC 제어기(82)는 VLAN 인덱스와 데이터 패킷의 소스 어드레스의 16 최하위 비트들을 연결하여 서치키를 생성한다. 전체 서치 키가 처리된 후, 해시 함수 회로(100)는 12 비트 해시 키를 출력한다. The hash function circuit 100 generates a hash key using the source address of the data packet according to the user specified hash function. Initially, the IRC controller 82 associates the VLAN index with the 16 least significant bits of the source address of the data packet to generate a search key. After the entire search key has been processed, the hash function circuit 100 outputs a 12 bit hash key.

12 비트 해시 키로부터, SA 룩업 엔진(210)은 어드레스 테이블(82) 내의 적절한 빈 리스트를 서치하기 위한 빈 번호를 계산한다. 보다 특정하게, SA 룩업 엔진(210)은 해시 키의 하위 POLYEN 비트들을 이용하여 빈 번호를 생성한다. 이러한 빈 번호는 [0, n-1]의 범위에 속하고(여기서, n=2POLYEN이다), POLYRN의 값은 호스트 CPU(32)에 의해 프로그램되고 레지스터(110)에 저장된다. 해시 함수 회로(100)에 의해 출력되는 해시 키는, 예를 들어 12 비트 병렬 AND 게이트(111)와 같은 논리 회로에 제공되는바, 이는 레지스터(210)에 저장된 다항식 인에이블 값(POLYEN)에 기초하여 해시 키의 보다 하위 비트들을 선택적으로 출력한다. "POLYEN" 필드는 빈 번호를 생성하기 위해 해시 키의 얼마나 많은 비트들이 이용되는 지를 정의한다. 예를 들어, POLYEN=5이면, SA 룩업 엔진(210)은 해시 키의 하위 5비트를 이용한다. 따라서, 논리 회로(100)에 의해 출력되는 해시 키는 레지스터(110) 내에 저장된 레지스터 값 POLYEN을 이용한 12 비트 해시 키의 마스킹에 근거한다. From the 12 bit hash key, the SA lookup engine 210 calculates a bin number for searching for the appropriate bin list in the address table 82. More specifically, SA lookup engine 210 uses the lower POLYEN bits of the hash key to generate a bin number. This bin number is in the range of [0, n-1] (where n = 2 POLYEN ) and the value of POLYRN is programmed by the host CPU 32 and stored in the register 110. The hash key output by the hash function circuit 100 is provided to a logic circuit such as, for example, a 12 bit parallel AND gate 111, which is based on the polynomial enable value POLYEN stored in the register 210. To selectively output the lower bits of the hash key. The "POLYEN" field defines how many bits of the hash key are used to generate a bin number. For example, if POLYEN = 5, SA lookup engine 210 uses the lower 5 bits of the hash key. Thus, the hash key output by the logic circuit 100 is based on the masking of the 12 bit hash key using the register value POLYEN stored in the register 110.

빈 번호가 계산된 후, SA 룩업 엔진(210)은, 그 어드레스 및 VLAN 인덱스가 수신된 프레임의 소스 어드레스(SA) 및 VLAN 인덱스와 일치하는 어드레스 엔트리를 찾아 특정 빈의 빈 리스트를 서치한다. After the bin number is calculated, the SA lookup engine 210 searches the bin list of the particular bin, looking for an address entry whose address and VLAN index match the source address (SA) and VLAN index of the received frame.

SA 룩업 엔진(210)이, 어드레스 및 VLAN 인덱스가 프레임의 SA 및 VLAN 인덱스와 일치하는 어드레스 엔트리를 찾는 다면, SA 룩업 엔진(210)은 그 어드레스 엔트리에 대해 히트 비트를 설정한다. SA 룩업 엔진(210)이 일치를 찾아내지 못하고, "학습(learning)", 즉 어드레스 테이블(82)에 새로운 엔트리들을 부가하는 것이 가능해지면, SA 룩업 엔진(210)은 수신된 프레임으로부터의 정보를 이용하여 IRC 어드레스 테이블(82)에 새로운 엔트리를 구축한다. If the SA lookup engine 210 finds an address entry whose address and VLAN indexes match the SA and VLAN indexes of the frame, the SA lookup engine 210 sets a hit bit for that address entry. If the SA lookup engine 210 does not find a match and it becomes possible to "learning", i.e., add new entries to the address table 82, the SA lookup engine 210 retrieves information from the received frame. A new entry is made in the IRC address table 82.

SA 룩업 엔진(210)이 서치를 완료하고 새로운 엔트리를 부가한 후, 필요에 따라, DA 룩업 엔진(220)은 어드레스 및 VLAN 인덱스가 프레임의 목적지 어드레스(DA) 및 VLAN 인덱스와 일치하는 어드레스 엔트리를 찾아 어드레스 테이블(82)을 서치한다. DA 룩업 엔진(220)은 도 8에 나타낸 12 비트 해시 함수 회로(100)를 이용하여 12 비트 해시 키를 생성한다. 이 DA 룩업 엔진(220)은 SA 룩업 엔진(210)에 대해 설명된 것과 유사한 방식으로 해시 키를 생성하는바, 차이점은 해시 함수 회로(100)가 목적지 어드레스 정보를 이용하여 서치 키 및 해시 키를 생성한다는 것이다. 이후, DA 룩업 엔진(220)은 해시 키의 하위 POLYEN 비트들을 이용하여 어드레스 테이블(82)의 빈 번호를 계산한다. 이후, DA 룩업 엔진(220)은 어드레스 테이블(82) 내의 DA/VLAN 인덱스 일치를 찾아 적절한 빈 리스트를 서치한다. 일치가 발견되면, DA 룩업 엔진(220)은 어드레스 엔트리의 포트 벡터 필드를 이용하여 포트 벡터 필드 정보를 유출 룰 엔진(230)에 전달한다. DA 룩업 엔진(220)이 DA/VLAN 인덱스 일치를 찾지 못하는 경우, 프레임은 VLAN의 모든 멤버들에게 "플러딩(flooding)"되어야 한다. 이 경우, DA 룩업 엔진(220)은 모든 포트들이 프레임을 전송할 것임을 나타내도록 포트 벡터를 설정한다. After the SA lookup engine 210 completes the search and adds a new entry, if necessary, the DA lookup engine 220 may then search for an address entry whose address and VLAN index matches the frame's destination address (DA) and VLAN index. The address table 82 is searched for. The DA lookup engine 220 generates a 12 bit hash key using the 12 bit hash function circuit 100 shown in FIG. The DA lookup engine 220 generates a hash key in a manner similar to that described for the SA lookup engine 210. The difference is that the hash function circuit 100 uses the destination address information to generate the search key and the hash key. To create. The DA lookup engine 220 then calculates the bin number of the address table 82 using the lower POLYEN bits of the hash key. The DA lookup engine 220 then finds a DA / VLAN index match in the address table 82 and searches the appropriate bin list. If a match is found, the DA lookup engine 220 uses the port vector field of the address entry to convey the port vector field information to the leak rule engine 230. If the DA lookup engine 220 does not find a DA / VLAN index match, the frame must be "flooded" to all members of the VLAN. In this case, the DA lookup engine 220 sets the port vector to indicate that all ports will send frames.

DA 룩업 엔진(220)이 포트 벡터를 생성한 후, 유출 룰 엔진(230)은 수신 포트 번호 및 VLAN ID 정보와 함께 포트 벡터 정보를 수신한다. 이후, 유출 룰 엔진(230)은 프레임에 대한 전송 기술자를 생성한다. After the DA lookup engine 220 generates the port vector, the outflow rule engine 230 receives the port vector information along with the receiving port number and the VLAN ID information. The outflow rule engine 230 then generates a transmission descriptor for the frame.

도 9는 본 발명의 일 실시예에 따른 전송 기술자의 구성을 나타낸다. 도 9를 참조하여, 우선순위 클래스 필드는 1 비트 필드로서, 프레임 포인터에, 예를 들어 높은 우선순위 또는 낮은 우선순위와 같은 우선순위가 부과되어야 하는 출력 우선순위 큐를 나타낸다. 9 shows a configuration of a transmission descriptor according to an embodiment of the present invention. Referring to FIG. 9, the priority class field is a 1-bit field, which indicates an output priority queue to which a frame pointer should be given priority, such as, for example, high priority or low priority.

포트 벡터 필드는 15 비트 필드로서, 데이터 프레임을 수신하여 자신의 목적지 어드레스에 전송해야 하는 각 포트(들)을 식별한다. 이 포트 벡터 필드의 비트 0은 포트 0(관리 포트)에 대응하고, 비트들 1-12는 각각 MAC 포트들(1-12)(10/100 Mb/s 포트들)에 대응하며, 비트 13은 기가비트 포트(24)에 대응하고, 그리고 비트 14는 확장 포트(30)에 대응한다. The port vector field is a 15-bit field that identifies each port (s) that should receive a data frame and send it to its destination address. Bit 0 of this port vector field corresponds to port 0 (management port), bits 1-12 correspond to MAC ports 1-12 (10/100 Mb / s ports), respectively. Corresponds to gigabit port 24, and bit 14 corresponds to expansion port 30.

태그되지 않은 세트 필드는 13 비트 필드로서, 어떤 포트가 프레임들을 전송하기 전에 VLAN 태그 헤더들을 제거해야하는 지를 나타낸다. 이 태그되지 않은 세트는 태그되지 않은 세트 테이블로부터 얻어진다. Rx 포트는 4 비트 필드로서, 프레임이 수신되었던 포트를 나타낸다. The untagged set field is a 13-bit field that indicates which port should remove the VLAN tag headers before sending frames. This untagged set is obtained from the untagged set table. The Rx port is a 4-bit field and indicates the port on which the frame was received.

VLAN ID 필드는 프레임과 관련된 VLAN 식별자를 포함하는 12 비트 필드이다. 연산코드는 11 비트 필드로서, 전송 이전에 프레임이 어떻게 변경되어야 하는 지에 대한 명령 및 호스트 CPU(32)가 관리 큐로부터의 프레임을 처리하기 위해 이용할 수 있는 정보를 포함한다. 프레임 포인터는 외부 메모리(36)에 저장된 프레임의 위치를 포함하는 13 비트 필드이다. The VLAN ID field is a 12 bit field containing the VLAN identifier associated with the frame. The opcode is an 11-bit field that contains instructions on how the frame should be changed before transmission and information that the host CPU 32 can use to process the frame from the management queue. The frame pointer is a 13 bit field containing the position of the frame stored in the external memory 36.

일단 필요한 전송 정보를 얻으면, 도 3에 나타낸 바와 같이, 유출 룰 엔진(230)은 큐잉을 위해 전송 기술자를 포트 벡터 FIFO(56)에 출력한다. Once the necessary transmission information is obtained, as shown in FIG. 3, the outflow rule engine 230 outputs a transmission descriptor to the port vector FIFO 56 for queuing.

트렁킹 기능Trunking function

상기 설명한 바와 같이, 멀티포트 스위치(12)는 10/100 Mb/s 동작이 가능한 12개의 포트들을 포함한다. 트렁킹은 2개의 동일한 장치들 간의 2개 이상의 점 대 점 접속을 단일 네트워크 링크로서 처리하는 기술이다. 이러한 트렁킹에 의해, 다수의 포트들을 링크시켜 2개의 말단 장치들 간에 트렁크 전송 경로를 형성함으로써, 멀티포트 스위치(12)는 2개의 장치들, 예를 들어 2개의 네트워크 스테이션들, 2개의 스위치들, 또는 서버와 스위치 간에 보다 큰(high) 대역폭 경로를 얻을 수 있게 된다. As described above, the multiport switch 12 includes 12 ports capable of 10/100 Mb / s operation. Trunking is a technique that treats two or more point-to-point connections between two identical devices as a single network link. By such trunking, by linking multiple ports to form a trunk transmission path between two end devices, the multiport switch 12 can be configured with two devices, for example two network stations, two switches, Or a higher bandwidth path can be obtained between the server and the switch.

예를 들어, 멀티포트 스위치(12) 상의 4개의 포트들이 100 Mb/s의 데이터 전송 속도로 설계되고, 트렁킹 방식이 이러한 4개의 포트들을 링크시켜 단일 트렁크를 형성한다고 가정하자. 결과적으로 형성되는 트렁크에 의해 이들 4개의 포트들을 통해 데이터를 송수신할 수 있게 됨으로써, 2개의 말단 장치들 간에 1개의 400Mb/s 링크가 형성된다. For example, suppose four ports on the multiport switch 12 are designed at a data transfer rate of 100 Mb / s, and the trunking scheme links these four ports to form a single trunk. The resulting trunk is capable of transmitting and receiving data through these four ports, thereby forming one 400 Mb / s link between the two end devices.

본 발명의 일 실시예에 따르면, 멀티포트 스위치(12)는 최대 3개의 독립적인 트렁크들을 지원하는바, 이들 각 트렁크는 2개 내지 4개의 포트들을 지원할 수 있다. 예시적인 실시예에서, 멀티포트 스위치(12) 상의 12개의 10/100 Mb/s 포트들은 도 10에 나타낸 바와 같이 3개의 트렁크 블록들로 분할된다. 도 10을 참조하여, 제 1 트렁크 블록(트렁크 1)은 포트들 1 내지 4를 포함하고, 제 2 트렁크 블록(트렁크 2)은 포트들 5 내지 8을 포함하며, 그리고 제 3 트렁크 블록(트렁크 3)은 포트들 9 내지 12를 포함한다. 트렁크 블록 내에서, 어떠한 2개 내지 4개의 인접 포트들은 단일 트렁크로 결합될 수 있다. According to one embodiment of the invention, the multiport switch 12 supports up to three independent trunks, each of which may support two to four ports. In an exemplary embodiment, twelve 10/100 Mb / s ports on the multiport switch 12 are divided into three trunk blocks as shown in FIG. Referring to FIG. 10, the first trunk block (trunk 1) includes ports 1 to 4, the second trunk block (trunk 2) includes ports 5 to 8, and the third trunk block (trunk 3). ) Includes ports 9-12. Within the trunk block, any two to four adjacent ports can be combined into a single trunk.

도 10은 본 발명의 예시적인 실시예에 따른 12개의 10/100 Mb/s에 대한 트렁크 멤버십 결합들을 나타낸다. 도 10에서, "T"는 포트가 트렁크에 포함됨을 나타내고, "-"는 포트가 트렁크에 포함되지 않기 때문에 독립적인 포트로서 이용될 수 있음을 나타낸다. 예시적인 실시예에서 상기 설명한 바와 같이, 어떠한 2개 내지 4개의 인접 포트들은 결합하여 단일 트렁크를 형성할 수 있다. 예를 들어, 도 10을 참조하면, 포트들 1 및 2이 결합하여 엔트리(A)에 나타낸 2-링크 트렁크를 형성할 수 있다. 하지만, 포트들 1 및 3은 서로 인접하지 않기 때문에, 2-링크 트렁크를 형성하도록 결합될 수 없다. 10 illustrates trunk membership bonds for twelve 10/100 Mb / s according to an exemplary embodiment of the present invention. In FIG. 10, "T" indicates that the port is included in the trunk, and "-" indicates that the port can be used as an independent port because it is not included in the trunk. As described above in an exemplary embodiment, any two to four adjacent ports may combine to form a single trunk. For example, referring to FIG. 10, ports 1 and 2 may combine to form a two-link trunk shown in entry A. However, because ports 1 and 3 are not adjacent to each other, they cannot be combined to form a two-link trunk.

대안적인 실시예들에서, 멀티포트 스위치(12)는 단일 트렁크 블럭 내에 보다 적은 포트들을 포함하거나, 또는 이 멀티포트 스위치(12)의 포트들의 최대수까지의 보다 많은 포트들을 포함할 수 있다. 또한, 대안적인 실시예에서, 멀티포트 스위치(12)는 어떤 포트들이 함께 링크될 수 있는 지에 대한 제한없이 구성될 수 있다. 예를 들어, 포트들 1, 3, 5, 7 및 9는 5-링크 트렁크로 결합될 수 있다. In alternative embodiments, the multiport switch 12 may include fewer ports within a single trunk block, or may include more ports up to the maximum number of ports of this multiport switch 12. Also, in an alternative embodiment, the multiport switch 12 can be configured without limiting which ports can be linked together. For example, ports 1, 3, 5, 7 and 9 can be combined into a 5-link trunk.

호스트 CPU(32)는, 예를 들어 말단 장치들이 100 Mb/s 이상의 대역폭을 갖는 데이터 링크를 요구하는 등의 특정 네트워크 요건들에 기초하여, 특정 트렁크 구성을 설정한다. 초기에, 호스트 CPU(32)는 도 4에서 나타난 바와 같이 각 포트 IRC 제어 레지스터(114a 내지 114l)에 트렁크 제어 비트들을 설정함으로써 특정 트렁크들에 포트들을 할당한다. 본 발명의 예시적인 실시예에 따르면, 멀티포트 스위치(12)는 12개의 10/100 Mb/s 포트들 각각에 대해 1개의 포트 IRC 제어 레지스터(114)를 포함한다. 대안적인 구성들에서는, 단일 레지스터를 이용하여 12개의 10/100 Mb/s 포트들에 대해 적절한 제어 정보를 저장할 수 있다. The host CPU 32 establishes a particular trunk configuration, for example based on specific network requirements, such as end devices requiring a data link with a bandwidth of 100 Mb / s or more. Initially, host CPU 32 assigns ports to specific trunks by setting trunk control bits in each port IRC control register 114a to 114l as shown in FIG. According to an exemplary embodiment of the present invention, the multiport switch 12 includes one port IRC control register 114 for each of the twelve 10/100 Mb / s ports. In alternative configurations, a single register may be used to store appropriate control information for twelve 10/100 Mb / s ports.

도 4를 참조하면, 각 포트 IRC 제어 레지스터(114)는 2개의 트렁크 제어 비트들: 즉 트렁크 비트(trunk bit) 및 트렁크_액티브 비트(trunk_act bit)를 포함한다. 트렁크 비트가 설정되면, 대응하는 포트가 트렁크의 멤버임을 나타낸다. 트렁크_액티브 비트가 설정되면, 대응하는 포트가 트렁크의 액티브 멤버임을 나타낸다. Referring to Figure 4, each port IRC control register 114 includes two trunk control bits: a trunk bit and a trunk_act bit. If the trunk bit is set, it indicates that the corresponding port is a member of the trunk. If the trunk_active bit is set, it indicates that the corresponding port is an active member of the trunk.

하기의 표 1은 트렁크 제어 비트들의 다양한 조합들, 및 이러한 조합들에 기초하여 어떻게 프레임들이 전송되어야 하는 지를 요약한다. Table 1 below summarizes the various combinations of trunk control bits and how frames should be transmitted based on these combinations.

트렁크trunk 트렁크_액티브Trunk_active 00 XX 포트는 트렁크 내에 없다. 이 포트에 대해 예정된 프레임들은 다른 포트로 다시 향하지 않을 것이다.The port is not in the trunk. Frames scheduled for this port will not be redirected to another port. 1One 00 포트가 트렁크의 일부이지만 액티브하지 않은데, 이는 아마도 링크가 실패했기 때문일 것이다. 이 포트에 대해 예정된 프레임들은 트렁크의 다른 포트로 다시 향할 것이다.The port is part of the trunk but is not active, probably because the link failed. Frames destined for this port will be redirected to another port in the trunk. 1One 1One 포트가 트렁크의 액티브 일부이다. 이 포트로부터 프레임들이 전송될 수 있다.The port is an active part of the trunk. Frames can be sent from this port.

표 1을 참조하여, 트렁크 비트가 "0"이면, 트렁크_액티브 비트와 상관없이, 대응하는 포트는 트렁크의 멤버가 아니고 이 포트에 대해 예정된 프레임들은 다른 포트로 다시 향하지 않을 것이다. 트렁크 비트가 "1"이고, 트렁크_액티브 비트가 "0"이면, 대응하는 포트는 트렁크의 일부이지만, 아마도 링크 실패로 인해 액티브하지 않다. 이 포트에 대해 예정된 프레임들은 트렁크의 다른 포트로 다시 향할 것이다. 트렁크 비트가 "1"이고, 트렁크_액티브 비트가 "1"이면, 대응하는 포트는 트렁크의 액티브 부분이고, 프레임들은 이 포트로부터 전송될 수 있는바, 이에 대해서는 하기에서 보다 상세히 설명한다. Referring to Table 1, if the trunk bit is "0", regardless of the trunk_active bit, the corresponding port is not a member of the trunk and frames destined for this port will not be redirected to another port. If the trunk bit is "1" and the trunk_active bit is "0", the corresponding port is part of the trunk, but is probably not active due to link failure. Frames destined for this port will be redirected to another port in the trunk. If the trunk bit is "1" and the trunk_active bit is "1", the corresponding port is the active part of the trunk, and frames can be transmitted from this port, as described in more detail below.

유익하게는, 트렁킹 정보를 저장하기 위해 포트 IRC 제어 레지스터(114a 내지 114l)를 이용함으로써, 본 발명은 IRC 어드레스 테이블(82)에 특정 트렁킹 정보를 저장하지 않으면서 트렁킹을 지원할 수 있다. 또한, 포트당 2개의 비트, 즉 트렁크 비트 및 트렁크_액티브 비트를 이용하여 트렁크 멤버십을 나타냄으로써, 링크가 파괴/복원될 때 또는 호스트 CPU(32)가 네트워크 트렁킹 구성을 변경할 때, 호스트 CPU(32)는 IRC 어드레스 테이블(82)을 변경하지 않으면서 트렁크를 재구성할 수 있다. 예를 들어, 호스트 CPU(32)가 트렁크 1의 액티브 포트로서 포트 2를 제거한다고 가정하자. 이 호스트 CPU(32)는포트 IRC 제어 레지스터(114b)의 트렁크_액티브 비트를 클리어함으로써 이를 달성한다. Advantageously, by using the port IRC control registers 114a-114l to store trunking information, the present invention can support trunking without storing specific trunking information in the IRC address table 82. In addition, by representing trunk membership using two bits per port, namely trunk bit and trunk_active bit, when the link is destroyed / restored or when the host CPU 32 changes the network trunking configuration, the host CPU 32 May reconfigure the trunk without changing the IRC address table 82. For example, assume that host CPU 32 removes port 2 as the active port of trunk 1. This host CPU 32 accomplishes this by clearing the trunk_active bit of the port IRC control register 114b.

상기 설명한 바와 같이, 프레임이 수신되면, IRC(40)는 이 프레임을 4개의 단계, 즉 유입 룰 엔진(200), SA 룩업 엔진(210), DA 룩업 엔진(220) 및 유출 룰 엔진(230) 각각을 통해 처리한다. DA 룩업 엔진(220)이 DA 룩업을 완료한 후, 유출 룰 엔진(230)은 포트 벡터 정보를 수신하여 검사하고, 포트 IRC 제어 레지스터(114)로부터 프레임이 트렁크의 일부인 포트를 통해 전송되어야 하는 지의 여부를 결정한다. 프레임이 트렁크 포트를 통해 전송될 때, 유출 룰 엔진(230)은 프레임이 전송될 트렁크의 특정 전송 포트를 결정한다. As described above, when a frame is received, the IRC 40 divides the frame into four stages: the inflow rule engine 200, the SA lookup engine 210, the DA lookup engine 220, and the outflow rule engine 230. Handle through each. After the DA lookup engine 220 completes the DA lookup, the outflow rule engine 230 receives and examines the port vector information and determines whether a frame from the port IRC control register 114 should be transmitted through the port that is part of the trunk. Determine whether or not. When a frame is transmitted through a trunk port, the outflow rule engine 230 determines the specific transmission port of the trunk to which the frame is to be transmitted.

도 11은 트렁킹과 관련된 프레임 전송 정보를 생성하는 방법을 나타낸 흐름도이다. 도 11의 단계(200)에서, 유출 룰 엔진(230)은 DA 록업 엔진(220)으로부터 포트 벡터 정보 및 수신 포트 정보를 수신한다. 다음으로, 단계(202)에서, 유출 룰 엔진(230)은 대응하는 IRC 포트 제어 레지스터(들)(114)에 저장된 정보와 포트 벡터 정보를 비교한다. 이후, 유출 룰 엔진(230)은 전송 포트가 트렁크의 일부인지의 여부를 결정한다. 즉, 유출 룰 엔진(230)은 포트 벡터에 의해 식별되는 포트(들)에 대응하는 각 포트 IRC 제어 레지스터(114)의 트렁크 비트를 검사한다. 11 is a flowchart illustrating a method of generating frame transmission information related to trunking. In step 200 of FIG. 11, the outflow rule engine 230 receives port vector information and receiving port information from the DA lockup engine 220. Next, in step 202, the outflow rule engine 230 compares the port vector information with the information stored in the corresponding IRC port control register (s) 114. The outflow rule engine 230 then determines whether the transport port is part of the trunk. That is, the leak rule engine 230 examines the trunk bit of each port IRC control register 114 corresponding to the port (s) identified by the port vector.

모든 전송 포트들이 트렁크의 일부가 아닐 때, 즉 트렁크 비트들이 "0"이면, 단계(204)에서 유출 룰 엔진(230)은 포트 벡터 FIFO(56)에 전송 기술자를 출력한다. 하지만, 전송 포트가 트렁크의 일부일 때, 즉 트렁크 비트가 "1"이면, 단계(206)에서 유출 룰 엔진(230)은 트렁크 포트들에 대응하는 포트 벡터 내의 모든 비트들을 마스크한다. When all of the transport ports are not part of the trunk, i.e. if the trunk bits are "0", then at step 204, the outflow rule engine 230 outputs a transmission descriptor to the port vector FIFO 56. However, if the transmission port is part of a trunk, i.e. the trunk bit is "1", then at step 206 the outflow rule engine 230 masks all the bits in the port vector corresponding to the trunk ports.

다음으로, 단계(208)에서, 유출 룰 엔진(230)은 트렁크 맵핑 동작을 수행하여 프레임이 전송될 포트를 결정한다. 도 12에 나타낸 예시적인 실시예에 따르면, 트렁크 맵핑 논리는 배타적 OR (XOR) 게이트(120)를 포함한다. 도 12를 참조하여, 트렁크 맵핑 논리는 프레임의 SA 및 DA의 2개의 최하위 비트들을 수신한 다음, 이들 비트들을 XOR 조합하여 2 비트 출력을 생성한다. 즉, 트렁크 맵핑 논리는 프레임의 SA 및 DA의 최하위 비트들을 XOR한 다음, 프레임의 SA 및 DA의 두번째 최하위 비트를 XOR한다. 이후, 유출 룰 엔진(230)은 2 비트 출력에 기초하여, 데이터를 전송할 트렁크의 포트들중 하나를 선택한다. Next, in step 208, the outflow rule engine 230 performs a trunk mapping operation to determine the port to which the frame is to be transmitted. According to the example embodiment shown in FIG. 12, the trunk mapping logic includes an exclusive OR (XOR) gate 120. 12, the trunk mapping logic receives the two least significant bits of the SA and DA of the frame and then XOR combines these bits to produce a two bit output. That is, trunk mapping logic XORs the least significant bits of the SA and DA of the frame and then XORs the second least significant bits of the SA and DA of the frame. The outflow rule engine 230 then selects one of the ports of the trunk to transmit data based on the two bit output.

도 12에 나타낸 예시적인 실시예에 따르면, XOR 게이트(120)로부터의 출력 비트 패턴 "00"은 트렁크 블록의 제 1 포트에 대응한다. 출력 비트 패턴들 "01", "10" 및 "11"은 각각 트렁크 블록의 제 2 포트 내지 제 4 포트에 대응한다. According to the exemplary embodiment shown in FIG. 12, the output bit pattern “00” from the XOR gate 120 corresponds to the first port of the trunk block. The output bit patterns "01", "10" and "11" respectively correspond to the second to fourth ports of the trunk block.

예를 들어, 포트 벡터가 프레임이 포트 2에 전송되어야 함을 나타내는 정보를 포함하고(즉, 15 비트 포트 벡터의 비트 2가 설정된다), 포트 IRC 제어 레지스터 2 (114b)가 포트 2가 트렁크 1의 액티브 멤버임을 나타낸다고(즉, 트렁 비트 및 트렁크_액티브 비트가 모두 "1"이다) 가정하자. 또한, 수신된 프레임의 소스 어드레스의 2개의 최하위 비트(LSB)들이 "01"이고, 수신된 프레임의 목적지 어드레스의 2개의 최하위 비트들이 "10"이라고 가정하자. 도 12를 참조하여, 유출 룰 엔진(230)은 "1" 및 "0", 즉 SA 및 DA 각각의 LSB들을 XOR 게이트(120)를 통해 XOR하여, "1"을 출력한다. 이후, 유출 룰 엔진(230)은 "0" 및 "1", 즉 SA 및 DA 각각의 제 2 LSB들을 XOR 게이트(120)를 통해 XOR하여, "1"을 출력한다. 따라서, 본 예의 XOR 게이트(120)의 출력은 "11"이다. 이러한 방식으로, 유출 룰 엔진(230)은 도 10에 나타낸 트렁크 1의 네번째 포트, 즉 포트 4를 선택한다. For example, the port vector contains information indicating that the frame should be sent to port 2 (ie, bit 2 of the 15-bit port vector is set), and port IRC control register 2 114b indicates that port 2 is trunk 1. Assume that it represents an active member of (i.e., both the trunc bit and the trunk_active bit are "1"). Also assume that the two least significant bits (LSBs) of the source address of the received frame are "01" and the two least significant bits of the destination address of the received frame are "10". Referring to FIG. 12, the outflow rule engine 230 XORs LSBs of “1” and “0”, that is, SA and DA through the XOR gate 120, and outputs “1”. Thereafter, the outflow rule engine 230 XORs the second LSBs of “0” and “1”, that is, SA and DA through the XOR gate 120 to output “1”. Therefore, the output of the XOR gate 120 of this example is "11". In this manner, the outflow rule engine 230 selects the fourth port of trunk 1, that is, port 4, shown in FIG.

대안적인 구성들에서는, 다른 트렁크 맵핑 기능을 이용하여, 데이터 프레임을 전송할 전송 포트를 결정한다. 유익하게는, 본 발명에서 이용되는 특정한 트렁크 맵핑 기능은 데이터 프레임들의 전송을 트렁크 내의 포트들 간에 비교적 동일하게 배분함으로써 2개의 말단 장치들 간의 효율적인 데이터 전송 속도를 최적화한다. 또한, 단일 트렁크에 4개 이상의 포트들이 포함되는 구성들에서, 이용되는 트렁크 맵핑 기능은 트렁크 포트를 선택하는 데에 2 비트 이상의 출력을 요구할 것이다. 예를 들어, 트렁크에 8개의 포트들이 포함된다면, 이러한 8개의 포트들로부터 출력 포트를 선택하는 데에는 3 비트 출력이 요구된다. In alternative configurations, another trunk mapping function is used to determine the transport port to which to transmit the data frame. Advantageously, the particular trunk mapping function used in the present invention optimizes the efficient data transfer rate between two end devices by distributing the transmission of data frames relatively equally among the ports in the trunk. Also, in configurations where more than four ports are included in a single trunk, the trunk mapping function used will require more than two bits of output to select the trunk port. For example, if a trunk contains eight ports, a three bit output is required to select an output port from these eight ports.

다음으로, 단계(210)에서, 유출 룰 엔진(230)은 단계(208)에서 선택된 포트가 트렁크의 액티브 포트인 지의 여부를 결정한다. 즉, 유출 룰 엔진(230)은 단계(208)에서 선택된 포트에 대한 포트 IRC 제어 레지스터(114)의 트렁크 비트가 "1"(이는 포트가 트렁크의 일부임을 나타낸다)이고, 트렁크_액티브 비트가 "1"(이는 포트가 트렁크의 액티브 링크임을 나타낸다)인지의 여부를 결정한다. Next, in step 210, the outflow rule engine 230 determines whether the port selected in step 208 is the active port of the trunk. In other words, the outflow rule engine 230 has the trunk bit of the port IRC control register 114 for the port selected in step 208 being " 1 " (which indicates that the port is part of a trunk) and the trunk_active bit is " 1 "(which indicates that the port is the active link of the trunk).

단계(210)에서의 결정이 "아니오"이면, 유출 룰 엔진(230)은 단계(212)에서 동일 트렁크에서 대안적인 포트를 선택한다. 예시적인 실시예에 따르면, 유출 룰 엔진(230)은 도 12에서 화살표로 나타낸 바와 같이 트렁크 블록 내의 다음의 고위 포트를 선택한다. 예를 들어, 단계(208)에서 트렁크 내의 제 3 포트가 선택되고, 단계(210)에서 유출 룰 엔진(230)이 상기 선택된 포트가 트렁크의 액티브 멤버가 아니라고 결정하면, 유출 룰 엔진(230)은 트렁크 내의 제 4 포트를 선택한다. 이후, 유출 룰 엔진은 단계(210)로 돌아가, 선택된 포트가 트렁크의 액티브 멤버일 때 까지 프로세스를 반복한다. 예를 들어, 트렁트 블록의 제 4 포트가 단계(212)에서 선택되고, 이 제 4 포트가 트렁크의 액티브 멤버가 아니라면, 유출 룰 엔진(230)은 트렁크 블록의 제 1 포트를 선택한다. 본 발명의 대안적인 실시예들에서, 대안적인 포트를 선택하는 다른 방법들을 이용할 수 있다. 예를 들어, 선택된 포트가 트렁크의 액티브 링크가 아니면, 트렁크 블록의 다음의 하위 포트를 선택한다. If the determination at step 210 is no, then the outflow rule engine 230 selects an alternative port in the same trunk at step 212. According to an exemplary embodiment, the outflow rule engine 230 selects the next higher port in the trunk block as indicated by the arrows in FIG. For example, if a third port in the trunk is selected in step 208 and the outflow rule engine 230 determines in step 210 that the selected port is not an active member of the trunk, outflow rule engine 230 Select the fourth port in the trunk. The outflow rule engine then returns to step 210 and repeats the process until the selected port is an active member of the trunk. For example, if a fourth port of the trunk block is selected in step 212 and the fourth port is not an active member of the trunk, then the outflow rule engine 230 selects the first port of the trunk block. In alternative embodiments of the present invention, other methods of selecting an alternative port may be used. For example, if the selected port is not the active link of the trunk, select the next lower port of the trunk block.

트렁크 내의 액티브 포트가 선택된 후, 단계(214)에서 유출 룰 엔진(230)은 데이터 프레임이 이 프레임이 전송되어야 하는 동일 트렁크의 일부인 트렁크 포트에 수신되었는 지의 여부를 체크한다. 즉, 유출 룰 엔진(230)은 프레임이 수신되었던 수신 포트에 대응하는 포트 IRC 제어 레지스터(114)의 내용을 체크하여, 트렁크 비트가 설정되었는 지의 여부를 결정한다. 단계(214)에서의 결정이 "아니오"이면, 유출 룰 엔진(230)은 단계(218)에서 포트 벡터 FIFO(56)에 전송 기술자를 출력한다. 단계(214)에서의 결정이 "예"이면, 유출 룰 엔진(230)은 단계(216)에서 수신 포트와 동일한 트렁크에 포함된 포트(들)에 대응하는 포트 벡터의 모든 비트들을 마스크한다. 이러한 방식으로, 유출 룰 엔진(230)은 트렁크 포트에 수신된 데이터 프레임들이 동일한 트렁크에 전송되지 않도록 보장한다. 유익하게는, 이는 데이터 프레임을 그 소스로 다시 전송하는 것과 관련된 처리 시간을 감소시킨다. After the active port in the trunk has been selected, in step 214 the outflow rule engine 230 checks whether a data frame has been received at the trunk port that is part of the same trunk to which the frame should be sent. That is, the leak rule engine 230 checks the contents of the port IRC control register 114 corresponding to the receiving port where the frame was received, and determines whether the trunk bit is set. If the determination at step 214 is no, then the outflow rule engine 230 outputs a transmission descriptor to the port vector FIFO 56 at step 218. If the determination at step 214 is "yes", then the outflow rule engine 230 masks all the bits of the port vector corresponding to the port (s) included in the same trunk as the receiving port in step 216. In this way, the outflow rule engine 230 ensures that data frames received at the trunk port are not sent to the same trunk. Advantageously, this reduces the processing time associated with sending the data frame back to its source.

다음으로, 유출 룰 엔진(230)은 포트 벡터를 포함하는 전송 기술자를 포트 벡터 FIFO(56)에 출력한다. 도 11에 나타난 흐름도는 멀티포트 스위치(12)에 의해 수신되는 데이터 프레임들에 적용할 수 있다. 하지만, 호스트 CPU(32)가 전송을 개시하면, IRC(40)는 이 호스트 CPU(32)에 의해 생성된 포트 벡터 정보를 변경하지 않음으로써, 도 11에서 나타낸 트렁킹 알고리즘을 바이패스한다. Next, the outflow rule engine 230 outputs a transmission descriptor including the port vector to the port vector FIFO 56. The flowchart shown in FIG. 11 can be applied to data frames received by the multiport switch 12. However, when the host CPU 32 starts transmission, the IRC 40 bypasses the trunking algorithm shown in Fig. 11 by not changing the port vector information generated by the host CPU 32.

지금까지 네트워크 인터페이스 장치에서의 트렁킹 시스템 및 방법에 대해 설명했다. 본 발명의 장점은, 멀티포트 스위치(12)가 어드레스 테이블(82)에 특정한 트렁킹 정보를 저장하지 않으면서 트렁킹을 지원함으로써, 어드레스 테이블(82)의 크기를 감소시키고, 이 어드레스 테이블(82)을 서치하는 데에 걸리는 시간을 감소시킨다는 것이다. 본 발명의 다른 장점은 어드레스 테이블(82)을 재구성하지 않으면서 트렁킹 변경들이 신속하고 효율적인 방식으로 행해짐으로써, 네트워크 고장 시간의 가능성을 감소시킨다는 것이다. So far, we have described the trunking system and method in the network interface device. An advantage of the present invention is that the multiport switch 12 supports trunking without storing trunking information specific to the address table 82, thereby reducing the size of the address table 82 and reducing the address table 82. Is to reduce the time it takes to search. Another advantage of the present invention is that trunking changes are made in a fast and efficient manner without reconfiguring the address table 82, thereby reducing the likelihood of network downtime.

본 개시에서는, 본 발명의 바람직한 실시예들을 제시하여 설명했지만, 상기 설명한 바와 같이, 본 발명은 다양한 다른 결합들 및 환경들에서 이용될 수 있고, 본원에서 설명되는 본 발명의 범위 내에서 변경 또는 수정될 수 있다. In the present disclosure, although preferred embodiments of the present invention have been described and described, as described above, the present invention can be used in various other combinations and environments, and can be changed or modified within the scope of the present invention described herein. Can be.

Claims (18)

스테이션들 간의 데이터 프레임의 통신을 제어하고 트렁킹을 지원하도록 구성된 멀티포트 스위치에 있어서, A multiport switch configured to control communication of data frames between stations and support trunking, 어드레스 정보 및 데이터 전송 정보를 저장하는 테이블과; 그리고 A table for storing address information and data transfer information; And 의사 결정 엔진을 포함하여 구성되며, Including the decision engine, 상기 의사 결정 엔진은: The decision engine is: 상기 테이블을 서치하여, 상기 데이터 프레임이 전송되어야 하는 포트를 식별하고; Search the table to identify a port to which the data frame should be sent; 상기 테이블을 참조하지 않으면서, 상기 식별된 포트가 트렁크의 일부인지의 여부를 결정하며; 그리고 Without referring to the table, determining whether the identified port is part of a trunk; And 상기 식별된 포트가 트렁크의 일부이면, 상기 데이터 프레임을 전송할 전송 포트를 결정하는 것을 특징으로 하는 멀티포트 스위치. And if the identified port is part of a trunk, determine a transmission port to which the data frame is to be sent. 제 1 항에 있어서, The method of claim 1, 상기 의사 결정 엔진은 트렁크 맵핑 기능을 수행하고 상기 전송 포트를 나타내는 값을 출력하는 것을 특징으로 하는 멀티포트 스위치.The decision engine performs a trunk mapping function and outputs a value indicating the transmission port. 제 2 항에 있어서, 상기 의사 결정 엔진은: The method of claim 2, wherein the decision engine is: 데이터 전송 정보를 생성하고; 그리고 Generate data transmission information; And 상기 트렁크 맵핑 기능으로부터의 출력에 기초하여 상기 데이터 전송 정보를 변경하는 것을 특징으로 하는 멀티포트 스위치.And modifying the data transmission information based on the output from the trunk mapping function. 제 2 항에 있어서, 상기 트렁크 맵핑 기능은: The method of claim 2, wherein the trunk mapping function is: 데이터 프레임의 소스 어드레스 및 목적지 어드레스 모두의 소정수의 최하위 비트들을 수신하여 결과를 출력하는 배타적 OR 게이트로 이루어지는 것을 특징으로 하는 멀티포트 스위치.And an exclusive OR gate for receiving a predetermined number of least significant bits of both the source address and the destination address of the data frame and outputting the result. 제 4 항에 있어서, 상기 의사 결정 엔진은: The method of claim 4, wherein the decision engine is: 상기 트렁크의 일부인 포트들에 대응하는 상기 데이터 전송 정보의 비트들을 마스크하고; 그리고 Mask bits of the data transmission information corresponding to ports that are part of the trunk; And 상기 전송 포트를 나타내는 상기 데이터 전송 정보의 비트를 설정하는 것을 특징으로 하는 멀티포트 스위치.And setting a bit of the data transmission information indicating the transmission port. 제 5 항에 있어서, 상기 의사 결정 엔진은: 6. The method of claim 5, wherein the decision engine is: 상기 데이터 프레임이 트렁크 포트에 수신될 때, 상기 데이터 전송 정보를 변경함으로써, 상기 데이터 프레임이 상기 트렁크 포트와 동일한 트렁크에 있는 포트로 전송되지 않게 하는 것을 특징으로 하는 멀티포트 스위치. And when said data frame is received at a trunk port, altering said data transmission information such that said data frame is not sent to a port in the same trunk as said trunk port. 제 1 항에 있어서, The method of claim 1, 상기 개별적인 포트들 각각에 대해 트렁킹 정보를 저장하는 메모리를 포함하고, A memory storing trunking information for each of the individual ports, 상기 의사 결정 엔진은, 상기 메모리의 내용에 기초하여, 상기 식별된 포트가 트렁크의 일부인지의 여부를 결정하는 것을 특징으로 하는 멀티포트 스위치.And the decision engine determines, based on the contents of the memory, whether the identified port is part of a trunk. 제 7 항에 있어서, 상기 메모리는: 8. The apparatus of claim 7, wherein the memory is: 포트가 트렁크 포트인지의 여부를 나타내는 트렁크 필드와; 그리고 A trunk field indicating whether the port is a trunk port; And 상기 포트가 트렁크의 액티브 부분인지의 여부를 나타내는 트렁크 액티브 필드를 포함하는 것을 특징으로 하는 멀티포트 스위치.And a trunk active field indicating whether the port is an active part of a trunk. 스테이션들 간의 데이터 프레임들의 통신을 제어하고 트렁킹을 지원하도록 구성된 멀티포트 스위치-이 멀티포트 스위치는 어드레스 엔트리들을 저장하는 어드레스 테이블을 포함한다-에서, 데이터 전송 정보를 생성하는 방법에 있어서, A multiport switch configured to control communication of data frames between stations and to support trunking, wherein the multiport switch includes an address table that stores address entries. 데이터 프레임으로부터 정보를 수신하는 단계와;Receiving information from a data frame; 상기 수신된 정보에 기초하여 데이터 전송 정보를 찾아 상기 어드레스 테이블을 서치하는 단계와;Searching the address table by finding data transmission information based on the received information; 상기 데이터 프레임이 트렁크의 일부인 포트를 통해 전송되어야 하는 지의 여부를 결정하는 단계와; 그리고 Determining whether the data frame should be transmitted over a port that is part of a trunk; And 상기 프레임이 상기 트렁크의 일부인 포트를 통해 그리고 상기 어드레스 테이블을 참조하지 않으면서 전송되어야 할 때, 상기 데이터 프레임을 전송할 전송 포트를 나타내는 값을 생성하는 단계를 포함하는 것을 특징으로 하는 데이터 전송 정보를 생성하는 방법. When the frame is to be transmitted through a port that is part of the trunk and without reference to the address table, generating a value indicating a transmission port to which the data frame is to be transmitted. How to. 제 9 항에 있어서, 상기 생성 단계는: The method of claim 9, wherein said generating step: 트렁크 맵핑 기능을 수행하는 단계 및 상기 전송 포트를 나타내는 값을 출력하는 단계를 포함하는 것을 특징으로 하는 데이터 전송 정보를 생성하는 방법.And performing a trunk mapping function and outputting a value indicating the transport port. 제 10 항에 있어서, The method of claim 10, 상기 트렁크 맵핑 기능으로부터의 출력에 기초하여 상기 데이터 전송 정보를 변경하는 단계를 포함하는 것을 특징으로 하는 데이터 전송 정보를 생성하는 방법.Changing the data transmission information based on the output from the trunk mapping function. 제 10 항에 있어서, 상기 트렁크 맵핑 기능은:11. The method of claim 10, wherein the trunk mapping function is: 상기 데이터 프레임의 소스 어드레스 및 목적지 어드레스 모두의 소정수의 최하위 비트들을 XOR시켜 결과를 출력하며; 그리고 XOR a predetermined number of least significant bits of both the source address and the destination address of the data frame to output a result; And 상기 결과를 상기 전송 포트를 나타내는 값에 맵핑하는 것을 포함하는 것을 특징으로 하는 데이터 전송 정보를 생성하는 방법.Mapping the result to a value representing the transmission port. 제 12 항에 있어서, The method of claim 12, 상기 트렁크의 일부인 포트들에 대응하는 데이터 전송 정보의 비트들을 마스크하는 단계와; 그리고 Masking bits of data transmission information corresponding to ports that are part of the trunk; And 상기 전송 포트를 나타내는 상기 데이터 전송 정보의 비트를 설정하는 단계를 포함하는 것을 특징으로 하는 데이터 전송 정보를 생성하는 방법.Setting a bit of the data transmission information indicating the transmission port. 제 13 항에 있어서, The method of claim 13, 상기 데이터 프레임이 트렁크 포트에 수신될 때, 상기 데이터 전송 정보를 변경함으로써, 상기 프레임이 상기 트렁크 포트와 동일한 트렁크에 있는 포트에 전송되지 않도록 하는 단계를 포함하는 것을 특징으로 하는 데이터 전송 정보를 생성하는 방법.When the data frame is received at a trunk port, altering the data transmission information so that the frame is not transmitted to a port in the same trunk as the trunk port. Way. 스테이션들 간의 데이터 프레임들의 통신을 제어하고 트렁킹을 지원하도록 구성된 멀티포트 스위치에 있어서, A multiport switch configured to control communication of data frames between stations and support trunking, 어드레스 정보 및 데이터 전송 정보를 저장하는 테이블과; A table for storing address information and data transfer information; 상기 멀티포트 스위치의 포트들에 대응하는 복수의 프로그램가능한 레지스터들과, 여기서 상기 각 프로그램가능한 레지스터는 상기 개별적인 포트들 각각에 대한 트렁킹 정보를 저장하며; 그리고 A plurality of programmable registers corresponding to the ports of the multiport switch, wherein each programmable register stores trunking information for each of the individual ports; And 의사 결정 엔진을 포함하여 구성되며, Including the decision engine, 상기 의사 결정 엔진은:The decision engine is: 상기 테이블을 서치하여, 상기 데이터 프레임에 대한 데이터 전송 정보를 생성하고; Search the table to generate data transmission information for the data frame; 상기 데이터 전송 정보 및 상기 복수의 프로그램가능한 레지스터들의 내용들에 기초하여, 상기 데이터 프레임이 트렁크 포트를 통해 전송되어야 하는 지의 여부를 결정하고; 그리고 Based on the data transmission information and the contents of the plurality of programmable registers, determine whether the data frame should be transmitted through a trunk port; And 상기 프레임이 상기 트렁크 포트를 통해 전송되어야 할 때, 상기 데이터 프레임을 전송할 전송 포트를 나타내는 값을 생성하는 것을 특징으로 하는 멀티포트 스위치. And when the frame is to be transmitted through the trunk port, generating a value indicating a transmission port to transmit the data frame. 제 15 항에 있어서, The method of claim 15, 상기 데이터 프레임의 소스 어드레스 및 목적지 어드레스 모두의 2개의 최하위 비트들을 수신하여 2 비트 출력을 생성하는 배타적 OR 게이트를 더 포함하며, An exclusive OR gate for receiving two least significant bits of both a source address and a destination address of the data frame to produce a two bit output; 상기 의사 결정 엔진은 상기 2 비트 출력에 기초하여 상기 전송 포트를 나타내는 값을 생성하는 것을 특징으로 하는 멀티포트 스위치. And the decision engine generates a value representing the transmission port based on the two bit output. 제 16 항에 있어서, 상기 의사 결정 엔진은:The system of claim 16, wherein the decision engine is: 상기 트렁크의 일부인 포트들에 대응하는 상기 데이터 전송 정보의 비트들을 마스크하고; 그리고 Mask bits of the data transmission information corresponding to ports that are part of the trunk; And 상기 전송 포트를 나타내는 상기 데이터 전송 정보의 비트를 설정하는 것을 특징으로 하는 멀티포트 스위치. And setting a bit of the data transmission information indicating the transmission port. 제 15 항에 있어서, 상기 트렁킹 정보는: 16. The method of claim 15, wherein the trunking information is: 포트가 트렁크 포트인지의 여부를 나타내는 트렁크 필드; 및 A trunk field indicating whether the port is a trunk port; And 상기 포트가 트렁크의 액티브 부분인지의 여부를 나타내는 트렁크 액티브 필드를 포함하는 것을 특징으로 하는 멀티포트 스위치. And a trunk active field indicating whether the port is an active part of a trunk.
KR1020017008440A 1999-05-24 1999-12-07 Method and apparatus for trunking multiple ports in a network switch KR100577448B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US31715199A 1999-05-24 1999-05-24
US09/317,151 1999-05-24

Publications (2)

Publication Number Publication Date
KR20010101360A KR20010101360A (en) 2001-11-14
KR100577448B1 true KR100577448B1 (en) 2006-05-10

Family

ID=23232337

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017008440A KR100577448B1 (en) 1999-05-24 1999-12-07 Method and apparatus for trunking multiple ports in a network switch

Country Status (4)

Country Link
EP (1) EP1180285A1 (en)
JP (1) JP2003500926A (en)
KR (1) KR100577448B1 (en)
WO (1) WO2000072523A1 (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6973082B2 (en) 2002-02-01 2005-12-06 Fujitsu Limited Forwarding packets to aggregated links using distributed ingress card processing
US7167941B2 (en) * 2003-09-10 2007-01-23 Intel Corporation Multi-port device configuration
JP4368251B2 (en) 2004-06-09 2009-11-18 富士通株式会社 Frame transfer processing method and apparatus
CN100352227C (en) * 2004-07-07 2007-11-28 华为技术有限公司 Multi-inserting frame interconnecting system
US7697525B2 (en) 2006-12-21 2010-04-13 Corrigent Systems Ltd. Forwarding multicast traffic over link aggregation ports
KR101044917B1 (en) * 2010-10-12 2011-06-28 주식회사 에이씨앤티시스템 Network switch system for checking link connection state and switch included in the same
JP2016058835A (en) * 2014-09-08 2016-04-21 日立金属株式会社 Relay system and switch device

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6665733B1 (en) * 1996-12-30 2003-12-16 Hewlett-Packard Development Company, L.P. Network communication device including bonded ports for increased bandwidth
US6016310A (en) * 1997-06-30 2000-01-18 Sun Microsystems, Inc. Trunking support in a high performance network device
US6151297A (en) * 1997-07-08 2000-11-21 Hewlett-Packard Company Method and system for link level server/switch trunking

Also Published As

Publication number Publication date
EP1180285A1 (en) 2002-02-20
KR20010101360A (en) 2001-11-14
WO2000072523A1 (en) 2000-11-30
JP2003500926A (en) 2003-01-07

Similar Documents

Publication Publication Date Title
US6535489B1 (en) Method and apparatus in a network switch for handling link failure and link recovery in a trunked data path
US6460088B1 (en) Method and apparatus for port vector determination at egress
US6445709B1 (en) Method and apparatus for finding a match entry using receive port number embedded in the port vector
US6775290B1 (en) Multiport network switch supporting multiple VLANs per port
US6813266B1 (en) Pipelined access to address table in a network switch
US6842457B1 (en) Flexible DMA descriptor support
US6122669A (en) Method and apparatus for auto-incrementing through table and updating single register in memory
US6515993B1 (en) Method and apparatus for manipulating VLAN tags
US6732184B1 (en) Address table overflow management in a network switch
US6680945B1 (en) Method and apparatus for support of tagging and untagging per VLAN per port
US7764674B2 (en) Address resolution snoop support for CPU
US6990102B1 (en) Parallel lookup tables for locating information in a packet switched network
US6577636B1 (en) Decision making engine receiving and storing a portion of a data frame in order to perform a frame forwarding decision
US6636523B1 (en) Flow control using rules queue monitoring in a network switching system
US6625146B1 (en) Method and apparatus for operating a network switch in a CPU-less environment
US6731596B1 (en) Network switch having system for automatically detecting change in network node connection
US7099325B1 (en) Alternately accessed parallel lookup tables for locating information in a packet switched network
US6658015B1 (en) Multiport switch with plurality of logic engines for simultaneously processing different respective data frames
US6907036B1 (en) Network switch enhancements directed to processing of internal operations in the network switch
US6904043B1 (en) Apparatus and methods for storing and processing header information in a network switch
US6778547B1 (en) Method and apparatus for improving throughput of a rules checker logic
US6529503B1 (en) Apparatus and method for storing header information in a network switch
US6507564B1 (en) Method and apparatus for testing aging function in a network switch
KR100577448B1 (en) Method and apparatus for trunking multiple ports in a network switch
US6584106B1 (en) Backbone forwarding scheme for multiport network switch

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee