KR20010101360A - 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
KR20010101360A
KR20010101360A KR1020017008440A KR20017008440A KR20010101360A KR 20010101360 A KR20010101360 A KR 20010101360A KR 1020017008440 A KR1020017008440 A KR 1020017008440A KR 20017008440 A KR20017008440 A KR 20017008440A KR 20010101360 A KR20010101360 A KR 20010101360A
Authority
KR
South Korea
Prior art keywords
port
trunk
frame
data
information
Prior art date
Application number
KR1020017008440A
Other languages
Korean (ko)
Other versions
KR100577448B1 (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

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

본 발명은 전송 정보를 생성하기 위해 다수의 포트 사용과 어드레스 테이블간에 데이터 패킷을 스위치하도록 된 네트워크 스위치에 관한 것이다. 결정 수행 엔진은 프레임이 트렁크의 부분인 포트 상에서 전송되는지를 판단하기 위해 프레임 전송 정보를 검사한다. 상기 프레임이 트렁크 포트상에서 출력된 때, 상기 결정 수행 엔진은 상기 프레임을 전송하는 포트를 결정한다.The present invention relates to a network switch adapted to switch data packets between multiple port usages and address tables to generate transmission information. The decision execution engine examines the frame transmission information to determine if the frame is transmitted on a port that is part of the trunk. When the frame is output on the trunk port, the decision making engine determines the port on which the frame is sent.

Description

네트워크 스위치에서 다수의 포트들을 트렁킹하기 위한 방법 및 장치{METHOD AND APPARATUS FOR TRUNKING MULTIPLE PORTS IN A NETWORK SWITCH}METHOD AND APPARATUS FOR TRUNKING MULTIPLE PORTS IN 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 technology in which multiple stations are connected to a single shared serial data path. Such stations often communicate with switches located between the shared data path and the stations connected to the path. Typically, a switch controls the communication of data packets on the network.

네트워크 스위치는 프레임들을 수신하고 적절한 목적지들로 전송하기 위한 스위칭 로직을 포함한다. 프레임 전송 결정을 발생시키는 한 배열은 직접 어드레싱 기술을 이용하는데, 여기서 네트워크 스위치는 목적지 어드레스들에 대한 스위칭 로직을 저장하는 고정된 어드레스 테이블을 포함한다. 예를 들어, 프레임은 그 플임의 소스 어드레스 및 목적지 어드레스를 나타내는 헤더 정보돠 함께 네트워크 스위치에 의해 수신될 수도 있다. 스위칭 로직은 소스 어드레스 및 목적지 어드레스를 룩업들로서 이용하여 고정된 어드레스를 서치함으로써 적절한 프레임 전송 정보를 찾는다. 스위치는 이 정보를 이용하여 프레임을 적절한 포트(들)로 전송한다.The network switch includes switching logic to receive the frames and send them to the appropriate destinations. One arrangement for generating frame transmission decisions uses a direct addressing technique, where the network switch includes a fixed address table that stores the switching logic for the destination addresses. For example, a frame may be received by a network switch with header information indicating the source address and destination address of the frame. The switching logic finds the appropriate frame transfer information by searching for a fixed address using the source address and destination address as lookups. The switch uses this information to send the frame to the appropriate port (s).

네트워크에 결합된 모든 스테이션들이 동시에 작동할 때, 공유된 직렬 경로 상에서의 패킷 트래픽은 패킷들 간의 적은 시간으로 인하여 많아지게 된다. 또한, 네트워크 처리량 요구조건으로 인하여, 데이터를 그의 목적지로 전송시키는 속도를 증가시키는 것이 점점 중요하게 되었다.When all stations coupled to the network are operating at the same time, the packet traffic on the shared serial path becomes large due to the small time between packets. In addition, due to network throughput requirements, it has become increasingly important to increase the speed at which data is sent to its destination.

데이터를 스테이션 사이로 전송시키는 속도를 증가시키기 위한 한 배열은 두 개의 스테이션들 간에 트렁크를 형성하기 위하여 다수의 링크들을 결합시키는, 링크 집합체(link aggregation)로도 일컬어지는, "트렁킹(trunking)"이다. 예를 들어, 스위치 상에 두 개의 개별적인 포트들이 각각 구성되어 100Mb/s의 데이터 전송 속도를 지원하다고 가정하자. 트렁킹 기술은 두 개의 포트들을 함께 링크시키고 이들 두 개의 포트들을 통하여 데이터를 송/수신하며, 결과적으로 두 개의 스테이션들 간에 200Mb/s 링크가 이루어지게 된다.One arrangement for increasing the speed of transferring data between stations is "trunking," also referred to as link aggregation, which combines multiple links to form a trunk between two stations. For example, suppose that two separate ports on the switch are each configured to support a data rate of 100 Mb / s. Trunking technology links two ports together and transmits / receives data through these two ports, resulting in a 200Mb / s link between the two stations.

이러한 트렁킹 기술이 갖는 단점은 어드레스 테이블이 데이터를 전송할 특정한 트렁크 포트를 포함하는 적절한 트렁킹 정보를 저장해야 한다는 것이다. 즉, 어드레스 테이블은 특정한 포트가 트렁크의 일부인지를 나타내는 정보를 저장해야 할 뿐만 아니라, 출력 포트가 트렁크의 일부임을 데이터 전송 정보가 나타낼 때, 데이터를 전송할 트렁크의 포트를 나타내는 정보를 저장해야 한다. 어드레스 테이블 내에 이러한 트렁킹 정보를 저장하게 되면, 어드레스 테이블의 물리적인 크기를 상당히 증가시킬 뿐 아니라 스위칭 로직의 상당히 복잡하게 함으로써, 프레임 전송 정보를 전송하는 데에 걸리는 시간을 증가시킨다.The disadvantage of this trunking technique 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 not only store information indicating whether a particular port is part of a trunk, but also store information indicating a port of a trunk to which data is transmitted when data transmission information indicates that an output port is part of a trunk. Storing this trunking information in the address table not only significantly increases the physical size of the address table, but also significantly increases the switching logic, thereby increasing the time it takes to transmit the frame transfer information.

또한, 저장된 트렁킹 정보에 대한 변경이 요구될 때, 즉 네트워크 구성이 변경될 때, 어드레스 테이블도 이에 대응하여 변경되어 새로운 트렁킹 구성을 나타내어야 한다. 이러한 어드레스 테이블의 재구성 과정은 시간 소모적이며 상당한 비용이 들어, 네크워크 고장시간(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 changed correspondingly to indicate a new trunking configuration. This reconfiguration of the address table is time consuming and costly, which may cause network downtime.

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

또한, 트렁킹을 지원하며 어드레스 테이블을 재프로그래밍하지 않으면서 트렁킹을 변경시킬 수 있다.It also supports trunking and allows you to change trunking without reprogramming the address table.

본 발명은 네트워크 통신에 관한 것으로서, 특히 고속 네트워크 링크들을 제공하는 네트워크 스위치 내의 다수의 포트들의 트렁킹에 관한 것이다.The present invention relates to network communications, and more particularly to trunking of multiple ports in a network switch that provides high speed network links.

도 1은 본 발명의 실시예에 따른 다수의 포트 스위치를 포함하는 패킷 교환 네트워크의 블록도이다.1 is a block diagram of a packet switched network including multiple port switches in accordance with an 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 illustrating the switching subsystem of FIG. 2.

도 4는 본 발명의 실시예에 따른 도 2의 내부 룰 체커를 포함하는 시스템의 블록도이다.4 is a block diagram of a system including the internal rule 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 that identify table entries for a selected bin.

도 8은 도 2의 내부 룰 체커를 구비하는 해시 기능 회로를 도시한다.FIG. 8 shows a hash function circuit with the internal rule checker of FIG. 2.

도 9는 본 발명의 실시예에 따른 전송 기술자의 조성을 도시한다.9 illustrates a composition of a transmission descriptor according to an embodiment of the present invention.

도 10은 본 발명의 실시예에 따른 트렁크 구성원 결합들을 도시한다.10 illustrates trunk member combinations in accordance with an embodiment of the present invention.

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

도 12는 본 발명의 실시예에 따른 트렁크 맵핑 로직을 도시한 블록도이다.12 is a block diagram illustrating trunk mapping logic in accordance with an embodiment of the present invention.

상기 및 다른 목적들은, 멀티포트 스위치가 프레임 전송 결정을 하기 위하여 결정 수행 엔진(decision making engine)에 의해 이용되는 어드레스 엔트리들을 저장하는 어드레스 테이블을 포함하는, 본 발명에 의해 충족된다. 결정 수행 엔진은 트렁킹 기능을 포함함으로써, 프레임 전송 정보가 체크되어 트렁크의 일부분인 출력 포트를 통하여 프레임이 전송될 것인지를 결정한다. 출력 포트가 트렁크의 일부일 때, 결정 수행 엔진은 프레임을 전송할 트겅한 포트를 결정하는 트렁크 맵핑 기능을 수행한다.These and other objects are met by the present invention, wherein the multiport switch includes an address table that stores address entries used by a decision making engine to make frame transmission decisions. The decision performing engine includes a trunking function so that the frame transmission information is checked to determine whether the frame is to be transmitted through an output port that is part of the trunk. When the output port is part of a trunk, the decision execution engine performs a trunk mapping function that determines which port to send the frame.

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

본 발명의 다른 양상은 스테이션들 간의 데이터 프레임들의 통신을 제어하는 멀티포트 스위치 내에 데이터 전송 정보를 발생시키는 방법을 제공한다. 이 방법은 데이터 프레임으로부터 정보를 수신하는 단계와, 이 수신된 정보를 근거로 데이터 전송 정보에 대한 어드레스 테이블을 서치하는 단계를 포함한다. 이 방법은 또한, 데이터 프레임이 트렁크의 일부인 포트를 통하여 전송될 것인 지를 결정하는 단계를 포함한다. 이 방법은 또한, 프레임이 트렁크의 일부인 포트를 통하여 전송될 때, 데이터 프레임을 전송할 전송 포트를 나타내는 값을 발생시키는 단계를 포함한다.Another aspect of the present invention provides a method for generating data transmission information in a multiport switch that controls communication of data frames between stations. The method includes receiving information from a data frame and searching an address table for data transmission information based on the received information. The method also includes determining if the data frame will 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 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 embodiments present the best mode for carrying out the invention. The present invention can be changed in various and obvious aspects without departing from the scope of the invention.

이제, 가령 이더넷(IEEE 802.3) 네트워크와 같은 패킷 교환 네트워크에서의 스위치를 예로 들어 본 발명을 설명한다. 그러나, 본 발명은 또한 하기에서 상세히 설명되는 바와 같이, 다른 패킷 교환 시스템들 뿐 아니라 일반적인 다른 타입의 시스템들에 적용가능하다.The 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, the present invention is also applicable to other packet switching systems as well as other types of systems in general, as described in detail below.

스위치 구조 개관Switch structure overview

도 1은 본 발명이 이용될 수도 있는 예시적인 시스템의 블록도이다. 예시적인 시스템(10)은, 가령 이더넷(IEEE 802.3) 네트워크와 같은 패킷 교환 네트워크이다. 패킷 교환 네트워크는 네트워크 스테이션들 간의 데이터 패킷들의 통신을 가능하게 하는 집적된 멀티포트 스위치들(IMS)(12)을 포함한다. 네트워크는 다른 구성들, 예를 들어 10Mb/s 또는 100Mb/s의 네트워크 데이터 속도로 데이터를 송수신하는 12개의 10Mb/s 또는 100Mb/s 네트워크 스테이션들(14)(이하 10/100Mb/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 employed. Exemplary system 10 is a packet switched network, such as, for example, an Ethernet (IEEE 802.3) network. The packet switched network includes integrated multiport switches (IMS) 12 that enable communication of data packets between network stations. The network may be configured in other configurations, for example, 12 10 Mb / s or 100 Mb / s network stations 14 (hereinafter 10/100 Mb / s) for transmitting and receiving data at a network data rate of 10 Mb / s or 100 Mb / s, and It may also include network stations having a 1000 Mb / s (ie 1 Gb / s) network node 22 that transmits and receives data packets at a network speed of 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 network nodes 14 or 22 to the appropriate destination based on the Ethernet protocol.

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

각각의 10/100 Mb/s 네트워크 스테이션(14)은 반이중 또는 전이중 이더넷 프로토콜에 따라 매체(17)를 통하여 해당하는 멀티포트 스위치(12)와 데이터 패킷들을 송수신한다. 이더넷 프로토콜 ISO/IEC 8802-3(ANSI/IEEE Std. 802.3 1993 Ed.)은 모든 스테이션들(14)이 동등하게 네트워크 채널로 접속할 수 있게 하는 반이중 매체 접속 메커니즘을 규정한다. 반이중 환경에서의 트래픽은 매체(17) 상에서 구별되지 않는다. 오히려, 각각의 반이중 스테이션(14)은 매체 상에서의 트래픽을 듣는 데에 캐리어 검출 다중 접근/충돌 검출 기능(CSMA/CD)을 이용하는 이더넷 인터페이스 카드를 이용한다. 네트워크 트래픽의 부재는 매체 상에서의 수신 캐리어의 디어서션(deassertion)을 감지함으로써 검출된다. 전송할 데이터를 갖는 모든 스테이션(14)은 매체 상에서의 수신 캐리어의 디어서션 이후, 인터패킷 갭 간격(IPG)으로 알려진 소정의 시간을 기다림으로써 채널에 접근하고자 할 것이다. 다수의 스테이션들(14)이 네트워크 상에서 전송할 데이터를 갖는 다면, 각 스테이션들은 매체 상에서의 수신 캐리어의 감지된 디어서션에 반응하여 전송하고자 할 것이며 IPC 간격 이후 충돌을 야기시킬 수도 있다. 이에 따라, 전송 스테이션은 매체를 모니터하여 동시에 데이터를 전송하는 다른 스테이션으로 인한 충돌이 있는 지를 결정할 것이다. 충돌이 검출된다면, 두 스테이션들은 전송을 중단하고, 임의의 시간을 기다린 후, 전송을 재시도한다.Each 10/100 Mb / s network station 14 transmits and receives data packets with the corresponding multiport switch 12 over medium 17 according to a half- or full-duplex Ethernet protocol. The Ethernet protocol ISO / IEC 8802-3 (ANSI / IEEE Std. 802.3 1993 Ed.) 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 uses an Ethernet interface card that uses carrier detection multiple access / collision detection function (CSMA / CD) to listen to traffic on the medium. The absence of network traffic is detected by detecting the deassertion of the receiving carrier on the medium. All stations 14 with data to transmit will want to access the channel after waiting for a predetermined time, known as the interpacket gap interval (IPG), after the decision of the receiving carrier on the medium. If multiple stations 14 have data to transmit on the network, each station would like to transmit in response to the sensed decision of the receiving carrier on the medium and may cause a collision after the IPC interval. Accordingly, the transmitting station will monitor the medium and determine if there is a collision due to another station transmitting data at the same time. If a collision is detected, the two stations stop transmitting, wait some time and then retry the transmission.

전이중 모드에서 작동하는 10/100Mb/s 네트워크 스테이션들(14)은 이더넷 표준 IEEE 802.3u에 따라 데이터 패킷들을 송수신한다. 전이중 환경은 각 링크 파트너, 즉 10/100Mb/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. Full-duplex environment is a bi-directional, point-to-point method that enables simultaneous transmission and reception of data packets between each link partner, that is, a 10/100 Mb / s network station 14 and the corresponding multiport switch 12. Provide a 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. Magnetic transformer 19 provides AC coupling between PHY transceiver 16 and corresponding network station media 17. Accordingly, the RMII 18 operates at a data rate sufficient to simultaneously send and receive data packets by the respective network stations 14 to the corresponding PHY transceiver 16 by means of the data packets.

각각의 멀티포트 스위치(12)는 또한 규정된 프로토콜에 따라 다른 스위치들 간에 데이터를 전송하는 확장 포트(30)를 포함한다. 각각의 확장 포트(30)는 다수의 멀티포트 스위치들(12)이 개별적인 백본 네트워크로서 함께 캐스케이드될 수 있게 한다.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)은 호스트 CPU(32)에 의해 제어되는 외부 취급엔티티에, 취급 정보 베이스(MIB) 형태의 통계적인 네트워크 정보를 제공하는데, 이에 대해서는 하기에서 설명된다.2 is a block diagram of the multiport switch 12. The multiport switch 12 includes a decision performing 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 a handling information base. (MIB) MAC (Media Connection) that supports routing of data packets between counters 48a and 48b, collectively 48, and Ethernet (IEEE 802.3) protocols acting on network stations 14 and gigabit nodes 22 Control) protocol interfaces 20 and 24. The MIB counters 48 provide statistical network information in the form of a handling information base (MIB) to an external handling entity controlled by the host CPU 32, as described below.

외부 메모리 인터페이스(44)는 외부 메모리(36), 가령 예를 들어 동기 스태틱 임의 접근 메모리(SSRAM) 내의 패킷 데이터의 외부 저장을 가능하게 하여, 멀티포트 스위치(12)의 칩 크기를 최소화한다. 특히, 멀티포트 스위치(12)는 수신된 프레임 데이터 및 메모리 구조들을 저장하기 위한 외부 메모리(36)를 이용한다. 외부 메모리(36)는 바람직하게는 조인트 일렉트론 디바이스 엔지니어링 카운실(JEDEC) 파이프라인 구성된 버스트 또는 64 비트 크기의 데이터 경로 및 17 비트 크기의 어드레스 경로를 갖는 제로 버스 턴어라운드TM(ZBT)-SSRAM이다. 외부 메모리(36)는 64 비트 워드들 내의 128K의 상위 및 하위 뱅크들로서 어드레스가능하다. 외부 메모리(36)의 크기는 바람직하게는 적어도 1Mbytes로서, 파이프라인을 통하여 모든 클록 주기에 대한 데이터 전송이 가능하다. 또한, 외부 메모리 인터페이스 클록은 적어도 66MHz, 및 바람직하게는 100MHz 및 그 이상의 클록 주파수들에서 작동한다.The external memory interface 44 enables external storage of packet data in the external memory 36, for example synchronous static random access memory (SSRAM), thereby minimizing the chip size of the multiport switch 12. In particular, the multiport switch 12 utilizes an external memory 36 for storing received frame data and memory structures. The external memory 36 is preferably a zero bus turnaround TM (ZBT) -SSRAM having a burst or 64 bit sized data path and a 17 bit sized address path constructed from a joint electron device engineering council (JEDEC) pipeline. The external memory 36 is addressable as upper and lower banks of 128K in 64-bit words. The size of the external memory 36 is preferably at least 1 Mbytes, allowing data transmission for all clock periods through the pipeline. In addition, the external memory interface clock operates at at least 66 MHz, and preferably at 100 MHz and higher clock frequencies.

멀티포트 스위치(12)는 또한, 가령 호스트 CPU(32)와 같은 외부 취급 엔티티가 멀티포트 스위치(12)의 전체적인 작동을 제어할 수 있게 하는 프로세싱 인터페이스(50)를 포함한다. 특히, 프로세싱 인터페이스(50)는 규정된 레지스터 접근 공간 내에서의 CPU 접근들을 디코드하며, 구성 및 상태 레지스터들(52)로부터 구성 및 상태 값들을 읽고, 구성 및 상태 레지스터들(52)에 구성 및 상태 값들을 기록한다.Multiport switch 12 also includes a processing interface 50 that allows an external handling 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, reads configuration and status values from configuration and status registers 52, and configures and statuses in configuration and status registers 52. Record the values.

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

멀티포트 스위치(12)는 또한 포트 마다의 조건들의 상태를 클록 아웃시키며 외부 LED 로직을 구동시킨다. 외부 LED 로직은 인간 판독가능한 DLE 디스플레이 요소들을 구동시킨다.The multiport switch 12 also clocks out the state of the conditions per port and drives external LED logic. External LED logic drives the human readable DLE display elements.

IRC(40)의 프레임 전송 결정을 실행하도록 구성된 스위칭 서브시스템(42)은 선입선출(FIFO) 버퍼(56), 다수의 출력 큐들(58), 멀티카피 큐(60), 멀티카피 캐시(62), 자유 버퍼 큐(62), 및 리클레임 큐(66)를 포함한다.Switching subsystem 42 configured to execute frame transfer decisions of IRC 40 includes first-in-first-out (FIFO) buffer 56, multiple output queues 58, multicopy queue 60, multicopy cache 62 , Free buffer queue 62, and reclaim queue 66.

MAC 유닛(20)은 각 포트에 대한 모듈들을 포함하며, 각 모듈은 MACM 수신부, 수신 FIFO 버퍼, 전송 FIFO 버퍼, 및 MAC 전송부를 포함한다. 네트워크 스테이션(14)으로부터의 데이터 패킷들은 해당하는 MAC 포트에 의해 수신되어 해당하는 수신 FIFO에 저장된다. MAC 유닛(20)은 자유 버퍼 큐(64)로부터 자유 버퍼 위치(즉, 프레임 포인터)를 얻으며, 이 프레임 포인터에 의해 지정된 위치에서 외부 메모리(36) 내에서의 저장을 위하여, 해당하는 수신 FIFO로부터 수신된 데이터 패킷들을 외부 메모리 인터페이스(44)로 출력한다.The MAC unit 20 includes modules for each port, each module including a MACM 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 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, and from the corresponding receive FIFO for storage in the external memory 36 at the position designated by this frame pointer. The received data packets are output to the external memory interface 44.

IRC(40)는 데이터 버스를 모니터하여(즉, "스누프(snoops)"하여), 프레임 포인터 및 (소스, 목적지, 및 VLAN 어드레스 정보를 포함하는) 수신된 패킷의 헤더 정보를 결정한다. IRC(40)는 헤더 정보를 이용하여, MAC 포트들이 프레임 포인터에 의해 지정된 위치에 저장된 데이터 프레임을 출력할 것인지를 결정한다. 따라서, 결정 수행 엔진(즉, IRC(40))은 주어진 데이터 프레임이 단일 포트, 다중 포트들,모든 포트들에 의해 출력되어야 하는지 (즉, 방송되어야 하는지), 어떠한 포트들에 의해서도 출력되지 않는지 (즉, 버려지는 지를) 결정할 수도 있다. 예를 들어, 각 데이터 프레임은 소스 및 목적지 어드레스를 갖는 헤더를 포함하는데, 여기서 결정 수행 엔진(40)은 목적지 어드레스를 근거로 적절한 출력 MAC 포트를 확인할 수도 있다. 변형적으로, 목적지 어드레스는 적절한 결정 수행 엔진이 해당하는 다수의 네트워크 스테이션들로서 확인하는 가상 어드레스에 해당할 수도 있다. 또한, 프레임은 프레임을 규정된 스테이션들중 하나 또는 그 이상의 멤버들로 향하게 될 정보로서 확인하는 VLAN 택 헤더를 포함할 수도 있다. IRC(40)는 또한 수신된 데이터 패킷이 확장 포트(30)를 통하여 다른 멀티포트 스위치(12)로 전송되어야 하는 지를 결정할 수도 있다. 이에 따라, 내부 룰 체커(40)는 외부 메모리(36)에 일시적으로 저장된 프레임이 단일 MAC 포트 또는 다수의 MAC 포트들로 출력되어야 하는 지를 결정할 것이다.IRC 40 monitors the data bus (ie, "snoops") to determine the frame pointer and header information of the received packet (including source, destination, and VLAN address information). The IRC 40 uses the header information to determine whether the MAC ports will output a data frame stored at the location specified by the frame pointer. Thus, the decision execution engine (i.e. IRC 40) may determine whether a given data frame should be output by a single port, multiple ports, all ports (i.e. broadcast) or not by any ports ( That is, discarded. For example, each data frame includes a header having a source and a destination address, where the decision making engine 40 may 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 making engine identifies as the corresponding multiple network stations. The frame may also include a VLAN tag header that identifies the frame as information that will be directed to one or more members of the defined stations. IRC 40 may also determine whether a 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 multiple MAC ports.

내부 룰 체커(40)는 전송 기술자(forwarding descriptor)의 형태로 전송 결정을 스위치 서브시스템(42)으로 출력한다. 전송 기술자는 프레임이 높은 우선순위인지 낮은 우선순위인지를 확인하는 우선순위 부류(priority class)와, 데이터 프레임을 전송해야 하는 각각의 MAC 포트를 확인하는 포트 벡터와, 수신 포트 번호와, 언택(untagged) 세트와, VLAN 정보와, 전송하는 동안 VLAN 정보를 포함해야 하는 각 MAC 포트를 확인하는 벡터와, 연산코드(opcode)와, 그리고 프레임 포인터를 포함한다. 전송 기술자의 포맷은 도 9와 관련하여 하기 설명된다. 포트 벡터는 전송을 위하여 데이터 프레임을 수신하는 MAC 포트들(예를 들어, 10/100 MAC포트들(1-12), 기가비트 MAC 포트들 및/또는 확장 포트)을 확인한다. 포트 벡터 FIFO(56)는 포트 벡터를 포함하는 전송 기술자를 디코드하며, 데이터 프레임 전송을 수신하는 출력 MAC 포트들에 해당하는 적절한 출력 큐들(58)에 프레임 포인터를 공급한다. 즉, 포트 벡터 FIFO(56)는 포트당(per-port) 기준으로 프레임 포인터를 공급한다. 출력 큐들(58)은 프레임 포인터를 디큐잉 블록(dequeuing block)(76)(도 3에 도시)에 제공하며, 이 디큐잉 블록(76)은 외부 메모리 인터페이스(44)를 통하여 외부메모리(36)로부터 포트 벡터 내에서 확인된 데이터 프레임을 패치하며, 그리고 수신된 데이터 프레임을 확인된 포트들의 적절한 전송 FIFO로 공급한다. 만일 데이터 프레임이 취급 대행인(management agent)에 의해 공급될 예정이라면, 프레임 포인터는 또한 CPU 인터페이스(50)를 통하여 호스트 CPU(32)에 의해 처리될 수 있는 취급 큐(68)에 공급된다.The internal rule checker 40 outputs the forwarding decision to the switch subsystem 42 in the form of a forwarding descriptor. Transmit descriptors include a priority class that identifies whether a frame is high or low priority, a port vector identifying each MAC port to which data frames should be sent, a receiving port number, and an untagged. ), A set of VLAN information, a vector identifying each MAC port that should contain VLAN information during transmission, an opcode, and a frame pointer. The format of the transmission descriptor is described below with respect to FIG. The port vector identifies the MAC ports (eg, 10/100 MAC ports 1-12, Gigabit MAC ports, and / or expansion ports) that receive the data frame for transmission. The port vector FIFO 56 decodes the transmission descriptor containing the port vector and supplies a frame pointer to the appropriate output queues 58 corresponding to the output MAC ports that receive the data frame transmission. That is, the port vector FIFO 56 supplies a frame pointer on a per-port basis. Output queues 58 provide a frame pointer to a dequeuing block 76 (shown in FIG. 3), which dequeuing block 76 is external memory 36 through an external memory interface 44. Patch the identified data frame in the port vector, and feed the received data frame to the appropriate transmit FIFO of the identified ports. If the data frame is to be supplied by a management agent, the frame pointer is also supplied to the handling queue 68 which can be processed by the host CPU 32 via the CPU interface 50.

멀티카피 큐(60) 및 멀티카피 캐시(62)는 각각의 포트들로부터 전송된 데이터 프레임의 카피들 수의 트랙을 유지하여, 적절한 수의 데이터 프레임의 카피들이 외부 메모리(36)로부터 출력될 때 까지, 데이터 프레임이 외부 메모리(36) 내에서 오버라이트되지 않도록 보장한다. 출력되는 카피들의 수가 포트 벡터 FIFO(56) 내에 지정된 포트들의 수에 해당한다면, 프레임 포인터는 리클레임 큐(66)로 전송된다. 리클레임 큐(66)는 리클레임될 필요가 있는 프레임 포인터들을 저장하고, 링크된 리스트 체인을 순시하여(walks), 버퍼들을 자유 버퍼 큐(64)에 자유 포인터들로서 되돌린다. 자유 버퍼 큐(64)로 되돌려진 후, 프레임 포인터는 MAC 유닛(20) 또는 기가비트 MAC 유닛(24)에 의한 재사용에 이용될 수 있다.Multicopy queue 60 and multicopy cache 62 keep track of the number of copies of data frames sent from their respective ports, so that when the appropriate number of copies of data frames are output from external memory 36 Until now, it ensures that data frames are not overwritten in external memory 36. If the number of copies output corresponds to the number of ports specified in the port vector FIFO 56, the frame pointer is sent to the reclaim queue 66. Reclaim queue 66 stores the frame pointers that need to be reclaimed, walks the linked list chain, and returns the buffers to free buffer queue 64 as free pointers. After returning to the free buffer queue 64, the frame pointer can be used for reuse 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 connections of the switch subsystem 42 to these elements.

도 3에 도시된 바와 같이, MAC 모듈(20)은 수신부(20a) 및 전송부(24b)를 포함한다. 수신부(24a) 및 전송부(24b)는 각각 802.3 프로토콜에 따라 해당하는 수신 또는 전송 기능을 수행하도록 구성된 12개의 MAC 모듈들(각각의 단지 두 개 만이 도시되며, 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. The receiver 24a and the transmitter 24b are each twelve MAC modules (only two of which are shown, each configured to perform the corresponding receive or transmit function according to the 802.3 protocol, numbered 70a, 70b, 70c and 70d, respectively). Is numbered). MAC modules 70c and 70d perform 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에 따라 구성된다.The gigabit MAC port 24 also includes a receiver 24a and a transmitter 24b, and the 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 their respective ports. 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 to operate in full duplex on the corresponding port, and the 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 of the transmit MAC modules 70c, 70d, 72c, and 72d is dequeuing logic 76 which transmits data from external memory 36 to the corresponding internal transmit FIFO, and frame pointer from free buffer queue 64. Queuing logic 74 to patch them. The queuing logic 74 stores the received data in the external memory 36 through the external memory interface controller 44 using the patched frame pointer. The frame buffer pointer specifies the location in external memory 36 where the received data frame will be stored by the receive FIFO.

외부 메모리 인터페이스 컨트롤러(44)는 외부 메모리(36)에 대한 모든 스위치 포트의 큐잉 로직(74) 또는 디큐잉 로직(76)에 의한 메모리 접근을 제어하는 스케쥴러(80), 및 외부 메모리(36)와의 판독 및 기록 연산들을 수행하는 SSRAM 인터페이스(78)를 포함한다. 특히, 멀티포트 스위치(12)는 비-블록킹 스위치로서 작동하도록 구성되는데, 여기서 네트워크 데이터는 10, 100, 또는 1000Mb/s의 각각의 와이어 속도로 스위치 포트들로부터 수신되고 출력된다. 이에 따라, 스케쥴러(80)는 다른 포트들에 의한 접근을 제어하여 외부 메모리(36)의 대역폭 이용을 최적화한다.The external memory interface controller 44 communicates with the scheduler 80, which controls memory access by the queuing logic 74 or dequeuing logic 76 of all switch ports to the external memory 36, and with the external memory 36. SSRAM interface 78 for performing read and write operations. 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 wire speeds of 10, 100, or 1000 Mb / s. As such, the scheduler 80 controls access by other ports to optimize bandwidth utilization of the external memory 36.

각각의 MAC은 해당하는 스위치 포트로부터의 수신시 내부 FIFO 내에 프레임 부분을 저장하며; FIFO의 크기는 스케쥴러 타임 슬롯들 사이에 도달하는 프레임 데이터를 저장하기에 충분하다. 해당하는 큐잉 로직(74)은 프레임 포인터를 얻고 기록 요구를 외부 메모리 인터페이스(44)로 보낸다. 스케쥴러(80)는 큐잉 로직(74)으로부터의 다른 기록 요구들 또는 디큐잉 로직(76)으로부터의 모든 판독 요구들과 기록 요구들을 스케쥴링하며, 그리고 큐잉 로직(74)(또는 디큐잉 로직(76))을 요구하는 허가(grant)를 발생시켜 스케쥴된 이벤트(즉, 슬롯)에서 전송을 개시한다. 이렇게 되면, 할당된 슬롯 동안 직접 메모리 접근(DMA) 트랜잭션으로 64 비트의 프레임 데이터가 기록 데이터 버스(69a)를 통하여 수신 FIFO로부터 외부 메모리(36)로 전송된다. 하기에 설명되는 바와 같이, 다수의 다른 버퍼들이 데이터 프레임들을 저장하는 데에 이용될 수 있음에도 불구하고, 프레임 데이터는 자유 버퍼 풀(64)로부터 얻어진 버퍼 포인터에 의해 지시된 위치에 저장된다.Each MAC stores the frame portion in an internal FIFO upon receipt from the corresponding switch port; 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. Scheduler 80 schedules all write requests and write requests from dequeuing logic 76 or other write requests from queuing logic 74, and queue queue 74 (or dequeuing logic 76). Generate a grant request to initiate transmission at the scheduled event (i.e. slot). This way, 64-bit frame data is transferred from the receive FIFO to external memory 36 via write data bus 69a in a direct memory access (DMA) transaction during the assigned slot. As described below, although a number of other buffers can be used to store the data frames, the frame data is stored at the location indicated by the buffer pointer obtained from the free buffer pool 64.

룰 체커(40)는 또한 프레임 포인터 및 (소스 어드레스, 목적지 어드레스, VLAN 택 정보 등을 포함하는) 헤더 정보를 수신한다. 룰 체커(40)는 헤더 정보를 이용하여 전송 결정을 수행하고, 포트 벡터를 포함하는 전송 기술자의 형태로 전송 지시를 발생시킨다. 포트 벡터는 프레임이 전송되어야 하는 각 출력 포트에 대한 비트 세트를 갖는다. 만일 수신된 프레임이 유니카피 프레임이라면, 룰 체커(40)에 의해 발생된 포트 벡터 내에는 단지 1 비트 만이 세트된다. 포트 벡터에 세트된 단일 비트는 포트들 중 특정한 하나에 해당한다.The rule checker 40 also receives a frame pointer and header information (including source address, destination address, VLAN tag information, and the like). The rule checker 40 performs a transmission decision using the header information, and generates a transmission indication in the form of a transmission descriptor including a port vector. The port vector has a set of bits 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)는 프레임 포인터를 적절한 큐(56 및/또는 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 is examined by the port vector FIFO 56 to determine if a particular output queue should receive the associated frame pointer. The port vector FIFO 56 places the frame pointer in the appropriate queue 56 and / or 68. This queues the transmission of the frame.

도 3에 도시된 바와 같이, 각각의 전송 MAC 유닛들(70c, 70d, 72c 및 72d)은 각각 관련된 출력 큐들(58a, 58b, 58c 및 58d)를 갖는다. 바람직한 실시예에서, 각각의 출력 큐들(58)은 높은 우선순위 프레임들에 대해서는 높은 우선순위 큐를, 그리고 낮은 우선순위 프레임들에 대해서는 낮은 우선순위 큐를 갖는다. 높은 우선순위 프레임들은 보장된 접속 레이턴시를 필요로 하는 프레임들, 예를 들어 멀티미디어 적용들을 위한 프레임들 또는 취급 MAC 프레임들에 이용된다. FIFO-타입 출력 큐들(58) 내에 저장된 프레임 포인터들은 각각의 전송 MAC 유닛들에 대한 디큐잉 로직(76)에 의해 처리된다. 적절한 어떠한 지점에서, 프레임 포인터는 출력 큐(58), 예를 들어 기가비트 전송 MAC(72c)에 대한 출력 큐(58d)의 바닥에 이르게 된다. 전송 기가비트 포트(24b)에 대한 디큐잉 로직(76)은 해당하는 기가비트 포트 출력 큐(58d)로부터 프레임 포인터를 얻으며, 프레임 포인터에 의해 지정된 메모리 위치에서 외부 메모리(36)로부터 프레임 데이터를 읽기 위하여 스케쥴러(80)로 요구를 보낸다. 스케쥴러(80)는 요구를 스케쥴링하고, 전송 기가비트 포트(24b)의 디큐잉 로직(76)에 대한 허가를 발행하여 DMA 판독을 개시한다. 허가에 반응하여, 디큐잉 로직(76)은 프레임 포인터에 의해 지정된 외부 메모리(36) 내의 위치로부터 DMA 트랜잭션으로 (판독 버스(69b)를 따라) 프레임 데이터를 읽고, 전송 기가비트 MAC(72c)에 의한 전송을 위하여 내부 전송 FIFO에 프레임 데이터를 저장한다. 전송 기술자가 유니카피 전송을 지정한다면, 프레임 포인터는 전체 프레임 데이터를 전송 FIFO 내에 기록한 이후 자유 버퍼 큐(64)로 되돌려진다.As shown in FIG. 3, each of the transmitting MAC units 70c, 70d, 72c and 72d 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 connection latency, for example frames for multimedia applications or handling MAC frames. Frame pointers stored in FIFO-type output queues 58 are processed by dequeuing logic 76 for each transmitting MAC unit. At any suitable point, the frame pointer reaches the bottom of the output queue 58, eg, the output queue 58d for the gigabit transmit MAC 72c. The dequeuing logic 76 for the transmit gigabit port 24b obtains a frame pointer from the corresponding gigabit port output queue 58d, and scheduler for reading frame data from the external memory 36 at the memory location specified by the frame pointer. Send a request to 80. The scheduler 80 schedules the request, issues a grant to the dequeuing logic 76 of the transmit gigabit port 24b and initiates a DMA read. In response to the authorization, the dequeuing logic 76 reads frame data (along the read bus 69b) from the location in the external memory 36 specified by the frame pointer (along the read bus 69b) and by the transmit gigabit MAC 72c. Frame data is stored in an internal transmit FIFO for transmission. 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 transmit FIFO.

멀티카피 전송은, 포트 벡터가 데이터 프레임이 전송될 다수의 포트들을 나타내는 다수의 비트 세트를 갖는 다는 것을 제외하고는 유니카피 전송과 유사하다. 프레임 포인터는 각각의 적절한 출력 큐들(58) 내에 위치되며, 적절한 전송 MAC 유닛들(20b, 24b 및/또는 30b)에 의해 전송된다.Multicopy transmission is similar to unicopy transmission except that the port vector has multiple sets of bits representing the multiple ports on which the data frame is to be transmitted. The frame pointer is located in each appropriate output queues 58 and sent by the appropriate transmitting MAC units 20b, 24b and / or 30b.

자유 버퍼 풀(64), 멀티카피 큐(60), 리클레임 큐(66), 및 멀티카피 캐시(62)는, 일단 데이터 프레임이 그의 지정된 출력 포트(들)로 전송되면, 프레임 포인터들의 이용 및 프레임 포인터들의 재이용을 조정하는 데에 이용된다. 특히, 디큐잉 로직(76)은 버퍼 내용들이 적절한 전송 FIFO에 카피된 후, 유니카피 프레임들에 대한 프레임 포인터들을 프레임 버퍼 큐(64)로 전달한다.Free buffer pool 64, multicopy queue 60, reclaim queue 66, and multicopy cache 62, once the data frame is sent to its designated output port (s), utilize the frame pointers and It is used to coordinate the reuse of frame pointers. In particular, dequeuing logic 76 passes the frame pointers for unicopy frames to frame buffer queue 64 after the buffer contents are copied to the appropriate transmit FIFO.

멀티카피 프레임들에 있어서, 포트 벡터 FIFO(56)는 하나 이상의 출력 큐(58)에 동일한 프레임 포인터의 다수의 카피들을 공급하는데, 각각의 프레임 포인터는 제로까지의 유니카피 비트 세트를 갖는다. 포터 벡터 FIFO(56)는 또한 멀티카피 큐(60)에 프레임 포인터 및 카피 카운트를 카피한다. 멀티카피 큐(60)는 카피 카운트를 멀티카피 캐시(62)에 기록한다. 멀티카피 캐시(62)는 외부 메모리(36)에 대한 각 버퍼(즉, 각 프레임 포인터)에 대하여 단일 카피 카운트를 갖는 임의 접근 메모리이다.For multicopy frames, port vector FIFO 56 supplies multiple copies of the same frame pointer to one or more output queues 58, each frame pointer having a set of up to zero unicopy bits. Porter vector FIFO 56 also copies the frame pointer and copy count to multicopy queue 60. The multicopy queue 60 writes a copy count to the multicopy cache 62. Multicopy cache 62 is a random access memory with a single copy count for each buffer (ie, each frame pointer) for 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 patched frame pointer and stores the frame data in the transmit FIFO, dequeuing logic 76 has set the unicopy bit to 1. Check it. 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, dequeuing logic 76 writes a frame pointer with a copy count of -1 to multicopy queue 60. Multicopy queue 60 adds a copy count to entries stored in multicopy cache 62.

프레임 포인터에 대한 멀티카피 캐시(62) 내의 카피 카운트가 제로에 이르게 되면, 프레임 포인터는 리클레임 큐(66)로 전달된다. 다수의 프레임 포인터들이 다수의 버퍼 메모리 위치들 내에 단일 데이터 프레임을 저장하는 데에 이용될 수도 있기 때문에, 프레임 포인터들은 서로 참조되어, 완전하게 저장된 데이터 프레임을 확인할 수 있도록 프레임 포인터들의 링크된-리스트(즉, 체인)을 형성한다. 리클레임 큐(66)는 프레임 포인터들에 의해 확인된 버퍼 위치들의 체인을 트래버스하여, 프레임 포인터들을 자유 버퍼 큐(64)로 전달한다.When the copy count in the multicopy cache 62 for the frame pointer reaches zero, the frame pointer is passed to the reclaim queue 66. Since multiple frame pointers may be used to store a single data frame in multiple buffer memory locations, the frame pointers are referenced to each other so that a linked-list of frame pointers may be used to identify a completely stored data frame. That is, to form a chain). Reclaim queue 66 traverses the chain of buffer locations identified by the frame pointers, passing the frame pointers to free buffer queue 64.

스위치 구조에 대한 상기의 설명은 패킷 교환 네트워크에서의 스위치 동작들의 개관을 제공한다. 멀티포트 스위치(12)에서 구현되는 본 발명의 특징들에 대한 좀 더 상세한 설명은 하기에서 설명된다.The above description of the switch architecture provides an overview of switch operations in a packet switched network. A more detailed description of the features of the invention implemented in the multiport switch 12 is described below.

내부 룰 체커Internal rule checkers

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

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

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

상기 예시적인 실시예에 따르면, 상기 어드레스 테이블(82)은 4096개의 사용자 어드레스들과 64개의 고유한 가상 국부 영역 네트워크들(VLANs)에 대한 용량들을 지원한다. 그러나, 상기 지원되는 어드레스들 및 VLAN들의 수는 상기 테이블 크기를 확장하는 것으로 증가시킬 수 있다. VLAN들은 "방송 도메인들"을 제공하는데, 여기서 방송 트래픽은 상기 VLAN의 "내부"에 유지된다. 예를 들어, 특정한 VLAN은 조직(organization)의 높은 수준에서 사용자들의 집단을 포함할 수 있다. 상기 사용자들의 집단으로 데이터를 전송하는 경우, 상기 데이터는 상기 사용자들 만이 상기 데이터를 수신하는 것을 보장하기위해서 상기 특정한 집단과 관련되는 특정한 VLAN 식별자(identifier)를 포함할 수 있다. 이러한 VLAN 집단화(grouping)들은 더 넓은 네트워크 내의 "서브-네트워크들"의 일종일 수 있다.According to the exemplary embodiment, the address table 82 supports capacities 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 "broadcast domains" where broadcast traffic is maintained "inside" of the VLAN. For example, a particular VLAN may contain a group of users at a high level of organization. When sending data to the group of users, the data may include a specific VLAN identifier associated with the particular group to ensure that only the users receive the data. Such VLAN groupings may be a kind of "sub-networks" in the wider network.

도 5는 상기 IRC 어드레스 테이블(82)의 조직을 예시한 것이다. 상기 IRC 어드레스 테이블(82)은 4096 엔트리들의 어레이를 포함한다. 처음의 "n" 엔트리들(92)은 "빈 엔트리들"로 간주되고, "0"부터 "n-1"까지의 어드레스들을 가진다. 나머지 엔트리들(94)은 "힙 엔트리들"로 간주되며, "0"부터 "4095"까지의 어드레스들을 가진다. 각 테이블 엔트리들은 72-비트 어드레스 엔트리 필드와 12-비트 "다음 포인터" 필드를 포함한다.5 illustrates the organization of the IRC address table 82. The IRC address table 82 includes an array of 4096 entries. The first "n" entries 92 are considered "empty entries" and have addresses from "0" to "n-1". The remaining entries 94 are considered "heap entries" and have addresses from "0" to "4095". Each table entry includes a 72-bit address entry field and a 12-bit "next pointer" field.

도 6은 도 5에 도시한 각 84-비트 테이블 엔트리의 구성을 예시한다. 히트(hit) 비트는 기 설정된 시간동안 사용되지 않은 엔트리들을 상기 어드레스 테이블(82)에서 제거하기 위한 엔트리 어드레스 "에이징"에 사용된다. 스태틱 비트는 주소 엔트리의 삭제를 방지하기 위해 사용된다. 트래픽 캡춰 비트는 상기 취급 큐(68)와 대화하는 MAC를 모니터링하기위해서 트래픽 캡춰 소스와 목적지 MAC 어드레스들을 식별한다.FIG. 6 illustrates the configuration of each 84-bit table entry shown in FIG. The hit bit is used for entry address " aging " to remove from the address table 82 entries that have not been 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 for monitoring the MAC talking with the handling queue 68.

상기 VLAN 인덱스 필드는 12-비트 VLAN 식별자(ID)를 참조하는데 사용되는 6-비트 필드이다. 도 4에 도시되는 상기 VLAN 인덱스-VLAN ID 테이블(86)은 맵핑 조합들을 포함한다. 상기 스위치(12)는 태그(tag)되고 언태그(untag)된 프레임들 모두를 수신한다. 상기 스위치(12)가 언태그된, 즉 VLAN 태그 정보가 없는 데이터 프레임들을 수신하는 경우, 상기 IRC(40)는 수신된 프레임의 수신 포트를 기반으로 VLAN 인덱스를 도 4에 도시되는 상기 VLAN 포트-인덱스 테이블(88)로부터 할당한다. 상기 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 untag frames. When the switch 12 receives data tags that are untagged, i.e. without VLAN tag information, the IRC 40 sets a VLAN index based on the receiving port of the received frame. Assignment is made from the index table 88. The VLAN index-ID table 86 and the VLAN port-index table 88 are located in configuration and status registers 52. However, in an alternative configuration, the tables 86 and 88 may be located inside the IRC 40.

포트 벡터는 15-비트 필드이며, 이는 프레임이 전송되어야 하는 포트(들)을 식별하는 벡터에 대한 전송 디스크립터(descriptor)를 제공한다.The port vector is a 15-bit field, which provides a transport descriptor for the vector identifying the port (s) to which the frame should be transmitted.

상기 MAC 어드레스 필드는 48-비트 필드이며, 이는 소스 어드레스 및 목적지 어드레스에 대한 모든 어드레스들을 포함한다. 상기 어드레스들은 단일 전달(unicast), 다중 전달(multicast), 방송일 수 있다. 개별적/집단(I/G) 비트 역시 상기 MAC 어드레스 필드에 포함된다.The MAC address field is a 48-bit field, which contains all the addresses for the source address and the destination address. The addresses may 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 present invention, host CPU 32 functions as a handling entity and is connected to the IRC 40 via the CPU IF 50. Alternatively, a handling MAC may be associated with the CPU IF 50 to operate as a handling entity.

상기 호스트 CPU(32)는 상기 어드레스 테이블(82) 값들을 초기화할 책임이 있다. 전원을 넣음에 따라서 상기 호스트 CPU(32)는 상기 어드레스 테이블(82)에 VLAN 구성들을 포함하는 상기 네트워크 구성을 기반으로 값들을 적재한다. 상기 IRC(40)는 프레임들이 상기 스위치(12)에 수신되는 경우 프레임 전송을 결정하기 위해 상기 어드레스 테이블(82)의 특정한 필드들을 사용한다. 좀더 구체적으로, 상기 IRC(40)는 프레임 전송 정보를 위해 상기 어드레스 테이블(82)를 엔진들(200-230)을 이용하여 서치하고, 상기 포트 벡터 FIFO(56)로 출력하기 위한 전송 디스크립터를 생성한다.The host CPU 32 is responsible for initializing the address table 82 values. Upon powering up, the host CPU 32 loads values into the address table 82 based on the network configuration including VLAN configurations. The IRC 40 uses specific fields of the address table 82 to determine frame transmission when frames are received at the switch 12. More specifically, the IRC 40 searches the address table 82 using the engines 200-230 for frame transmission information, and generates a transmission descriptor for outputting the port vector FIFO 56. do.

이전에 논의한 바와 같이, 엔진들(200-230)은 분리된 로직 엔진들이며, 그로인해 독립적으로 데이터 프레임들을 처리할 수 있고, 그 결과 한번에 한 프레임을 처리하는 시스템들에 비해서 데이터 처리량을 증가시킨다. 다시 말해서, 각 로직 엔진은 다른 개별적인 로직 엔진과 같이 상이한 데이터 프레임들을 동시에 개별적으로 처리할 수 있다. 각 로직 엔진의 동작은 이하 간단히 설명될 것이다.As discussed previously, the engines 200-230 are separate logic engines, which can process data frames independently, thereby increasing data throughput compared to systems that process one frame at a time. In other words, each logic engine can process different data frames separately and simultaneously, like other separate logic engines. The operation of each logic engine will be briefly described below.

진입(ingress) 룰 엔진(200)은 입력되는 데이터 프레임들에 대해서 다양한 전-처리 기능들을 수행한다. 예를 들어서, 진입 룰 엔진(200)은 상기 프레임이 수신되는 경우 상기 해당하는 MAC가 임의의 전송 오류를 검출하는가를 보기위해 검사한다. 또한, 상기 진입 룰 엔진(200)은 상기 개별적인/집단(I/G) 비트가 세트되었는 지를 결정하기 위해 수신된 상기 소스 어드레스를 검사한다. 만일 I/G 비트가 세트되었으면, 상기 진입 룰 엔진(200)은 상기 프레임이 오류와 같이 수신되었는 가를 통해 상기 프레임을 처리한다. 즉, 수신 오류가 발생하는 경우, 상기 진입 룰 엔진(200)은 상기 프레임을 버리도록 하는 널(null) 포트 벡터를 이용하여 전송 디스크립터를 생성한다. 대안적으로, 상기 진입 룰 엔진(200)은 상기 오류 프레임을 진단하기위해 상기 호스트 CPU(32)로 전달할 수 있다.The ingress rule engine 200 performs various pre-processing functions on the input data frames. For example, the entry rule engine 200 checks to see if the corresponding MAC detects any transmission error when the frame is received. The entry rule engine 200 also examines the received source address to determine if the respective / group (I / G) bits are set. If the I / G bit is set, the entry rule engine 200 processes the frame based on whether the frame was received as an error. That is, when a reception error occurs, the entry rule engine 200 generates a transmission descriptor using a null port vector for discarding the frame. Alternatively, the entry rule engine 200 may forward the error frame to the host CPU 32 to diagnose the error frame.

또한, 상기 진입 룰 엔진(200)은 상기 프레임이 예를 들어 호스트 CPU(32)와 같은 상기 취급 엔티티로 전달되는가를 결정하기 위해 상기 프레임의 MAC DA를 검사한다. 구체적으로, 상기 진입 룰 엔진(200)은 브리지 프로토콜 데이터 유닛(BPDU)들, 일반 특성 등록 프로토콜(Generic Attribute Regestration Protocol:GARP) 프레임, MAC 제어 프레임들 그리고 물리적인 MAC 어드레스를 검색한다. 상기 진입 룰 엔진(200)은 이러한 종류들의 프레임들을 그들의 특정한 목적지 어드레스 정보를 기반으로 식별한다.The entry rule engine 200 also checks the MAC DA of the frame to determine if the frame is passed to the handling entity such as, for example, the host CPU 32. Specifically, the entry rule engine 200 retrieves bridge protocol data units (BPDUs), Generic Attribute Regestration Protocol (GARP) frames, MAC control frames, and physical MAC addresses. The entry rule engine 200 identifies these kinds of frames based on their specific destination address information.

선택적으로, 상기 진입 룰 엔진(200)은 상기 수신 포트와 관련되는 VLAN에 속하지 않는 프레임의 전송로부터 상기 멀티포트 스위치(12)를 방지하기위해 VLAN 진입 필터링을 수행한다. 상기 진입 룰 엔진(200)은 VLAN 멤버 세트 테이블을 억세스하고, 이는 각 포트와 연관되는 VLAN들을 나타내며, 특정 프레임이 상기 수신 포트와 연관되는 VLAN에 속하는가를 결정한다. 프레임이 상기 진입 필터링에 실패한 경우, 상기 진입 룰 엔진(200)은 SA 또는 DA 룩업들, 혹은 진출(egress) 룰 조작을 수행하지 않으면서 널 포인터 벡터로 전송 디스크립터를 생성한다.Optionally, the ingress rule engine 200 performs VLAN ingress filtering to prevent the multiport switch 12 from transmission of a frame that does not belong to a VLAN associated with the receive port. The entry rule engine 200 accesses the VLAN member set table, which indicates the VLANs associated with each port and determines whether a particular frame belongs to the VLAN associated with the receiving port. If a frame fails the entry filtering, the entry rule engine 200 generates a transmission descriptor with a null pointer vector without performing SA or DA lookups or egress rule manipulation.

진입 룰 엔진(200)을 통해 처리된 후, 상기 IRC(40)는 어드레스 테이블(82)의 SA 및 DA 서치들을 수행한다. 상기 멀티포트 스위치(12)는 멀티플 데이터 프레임들이 상기 멀티포트 스위치(12)를 통해 동시에 수신되기 때문에 비교적 빠른 전송 결정을 내려야한다. 그래서, 본 발명의 예시적인 실시예에서, 이하 설명되는 바와 같이 상기 어드레스 엔트리들의 서브세트 만을 서치하는데 해싱 구성을 사용한다. 상기 도 5의 메모리 구조는 인덱스된 배열을 제공하는데, 여기서 주어진 네트워크 어드레스는 해당 빈에 할당될 것이다. 다시 말해서, 각 빈 엔트리(96)는 다수의 테이블 엔트리들(즉, 힙 엔트리들)(98)을 참조하여 구성된다. 그래서, 상기 SA 룩업 엔진(210)은 해시 키에 의해 지정되는 특정 빈(96)을 처음 엑세싱하는 것에 의해 상기 어드레스 테이블(82)의 서치를 실시한 후, 적절한 일치를 위치시키기 위해 상기 해당하는 빈 내부에서(즉, 이를 참조로하여) 상기 엔트리들을 서칭한다.After processing through the entry rule engine 200, the IRC 40 performs the SA and DA searches of the address table 82. The multiport switch 12 must make a relatively fast transmission decision because multiple data frames are simultaneously received via the multiport switch 12. Thus, in an exemplary embodiment of the present invention, a hashing scheme is used to search only a subset of the address entries as described below. The memory structure of Figure 5 provides an indexed array, where a given network address will be assigned to that bin. In other words, each empty entry 96 is configured with reference to a number of table entries (ie, heap entries) 98. Thus, the SA lookup engine 210 performs a search of the address table 82 by first accessing a particular bin 96 specified by a hash key, and then places the corresponding bin to locate the appropriate match. Search the entries internally (ie with reference to it).

각 빈 엔트리(96)는 상기 어드레스 테이블(82) 내부의 특정 어드레스에 대해서 SA 룩업 엔진(210)에의해 서치되는 시작 위치이다. 빈 엔트리는 어드레스를 참조하지 않으며(즉, 비어있음), 상기 빈 엔트리 위치 내부의 한개 어드레스 만을 참조하거나 링크된 리스트 체인 구조를 이용하여 다수의 어드레스들을 참조할 수 있다.Each empty entry 96 is a starting position searched by the SA lookup engine 210 for a particular address within the address table 82. An empty entry does not refer to an address (ie, is empty), but may refer to only one address within the 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이면, 단일 테이블 엔트리를 포함하고, 상기 빈 엔트리는 그 어드레스 엔트리 필드의 단일 어드레스에 대한 스위칭 로직 데이터를 저장하며, 값 "0"을 상기 "다음 포인터"에 저장하는데, 이는 상기 체인에 다른 어드레스 엔트리들이 없다는 것을 나타낸다. 그러나, 빈 0(96a)은 상기 체인의 다음 엔트리의 위치를 식별하기 위해 상기 "다음 포인터" 필드를 이용하여 4개의 주소들을 참조한다. 상기 빈의 부가적인 엔트리들(96b-96d)은 선형 리스트로 링크되고, 도 7에 도시된다. 그래서, 상기 빈 0의 제 1엔트리는 상기 빈 엔트리(96a)의 어드레스 엔트리 필드에 저장되고, 상기 다음 엔트리(힙 엔트리(98a))는 상기 빈 엔트리(96a)의 다음 포인터 필드의 어드레스 엔트리 "a"에 의해 참조된다.7 is a diagram illustrating empty entries referencing a different number 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 next entry location of the chain of linked list addresses. For example, bin 3 96d in FIG. 7 has no table entries associated with it. In this case, the contents of the 72-bit entry are garbage values, and the corresponding "next pointer" field of the bin has a value of "1", indicating that there is no entry of that bin. If the bin is empty 1, it contains a single table entry, which stores the switching logic data for a single address of its address entry field, and stores a value "0" in the "next pointer", which is the chain. Indicates there are no other address entries. 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 to a linear list and shown in FIG. 7. Thus, the first entry of the bin 0 is stored in the address entry field of the bin entry 96a, and the next entry (heap entry 98a) is the address entry " a of the next pointer field of the bin entry 96a. Is referred to.

상기 SA 룩업 엔진(210)은 소스 어드레스와 관련되는 엔트리들과 수신된 데이터 프레임의 VLAN 인덱스를 검출하기위해 상기 IRC 어드레스 테이블(82)의 해시 서치들을 수행한다. 도 8은 본 발명의 실시예에 따라서 상기 SA 룩업 엔진(210)과 결합하는데 이용되는 예시적인 해시 기능 회로(100)를 나타내는 블록 다이어그램이다. 상기 해시 기능 회로(100)는 AND 게이트들(12)의 나열과 배타적 OR(XOR)게이트들(104)의 나열, 그리고 쉬프트 레지스터(106)를 포함한다. 사용자-프로그래머블 레지스터(HASHPOLY)(108)에 저장되는 사용자 정의된 해시 기능은 상기 해시 기능 회로(100)에의해 사용되는 해시 다항식을 정의하는 12-비트 값을 포함한다. 본 발명의 해싱 기능에 대해 사용되는 해시 다항식들은 x12+x10+x7+x3+x2+1이고, 이는 HASHPOLY에서 0100 1000 1101이며, x12+x10+x5+x3+1은 HASHPOLY에서 0100 0010 1001이고, x12+x10+x8+x7+x4+x2+1은 HASHPOLY에서 0101 1001 0101이다. 상기 x12는 항상 1로 가정하면 이는 상기 HASHPOLY 레지스터(108)에 저장되지 않는다. 다른 다항식들은 특정한 설계 요구에 따라서 HASHPOLY에 사용될 수 있다.The SA lookup engine 210 performs hash searches of the IRC address table 82 to detect entries associated with the source address and the VLAN index of the received data frame. 8 is a block diagram illustrating an exemplary hash function circuit 100 used to couple with the SA lookup engine 210 in accordance with an embodiment of the present invention. The hash function circuit 100 includes an array of AND gates 12, an array of exclusive OR (XOR) gates 104, and a shift register 106. The user-defined 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. The hash polynomials used for the hashing function of the present invention are x 12 + x 10 + x 7 + x 3 + x 2 +1, which is 0100 1000 1101 in HASHPOLY, x 12 + x 10 + x 5 + x 3 + 1 is 0100 0010 1001 in HASHPOLY and x 12 + x 10 + x 8 + x 7 + x 4 + x 2 +1 is 0101 1001 0101 in HASHPOLY. Assuming that x 12 is always 1, it is not stored in the HASHPOLY register 108. Other polynomials can 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 a user-defined hash function. Initially, the IRC controller 82 concatenates the VLAN index and 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 computes a bin number for searching for the appropriate bin list of the address table 82. More specifically, the SA lookup engine 210 uses the lower POLYEN bits of the hash key to generate the bin number. The bin number is in the range of [0, n-1], where n = 2 POLYEN , 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, and in accordance with a polynomial allowance value POLYEN stored in a register 210. The least significant bits of the hash key are optionally output. The field "POLYEN" defines how many bits of hash key was used to generate the bin number. For example, if POLYEN = 5, the 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 masking the 12-bit hash key using the register value POLYEN stored in register 110.

상기 빈 번호가 연산된 후, 상기 SA 룩업 테이블 엔진(210)은 그 어드레스와 VLAN 인덱스가 상기 소스 어드레스(SA)와 상기 수신된 프레임의 VLAN 인덱스와 일치하는 어드레스 엔트리에 대해서 특정 빈의 빈 리스트를 서치한다.After the bin number has been computed, the SA lookup table engine 210 generates an empty list of specific bins for an address entry whose address and VLAN index matches the source address SA and the VLAN index of the received frame. Search.

만일 상기 SA 룩업 엔진(210)이 그 어드레스와 VLAN 인덱스가 상기 프레임의 SA 및 VLAN 인덱스와 일치하는 어드레스 엔트리를 검출한다면, 상기 SA 룩업 엔진(210)은 상기 어드레스 엔트리에 대한 히트 비트를 세트한다. 만일 SA 룩업 엔진(210)이 일치를 검출하지 못하고 "러닝(learning)", 즉 상기 어드레스 테이블(82)에 대한 새로운 엔트리들의 추가가 허가되면, 상기 SA 룩업 엔진(210)은 상기 수신된 프레임으로부터의 정보를 이용하여 상기 IRC 어드레스 테이블(82)에새로운 엔트리를 구성한다.If the SA lookup engine 210 detects an address entry whose address and VLAN index match the SA and VLAN index of the frame, the SA lookup engine 210 sets a hit bit for the address entry. If the SA lookup engine 210 does not detect a match and is allowed to "learning", i.e., adding new entries to the address table 82, the SA lookup engine 210 will start from the received frame. The new entry is constructed in the IRC address table 82 using the information of.

상기 SA 룩업 엔진(210)이 완료되고 새로운 엔트리가 추가된 다음, 만일 필요하다면, DA 룩업 엔진(220)이 그 어드레스 및 VLAN 인덱스가 상기 목적지 어드레스(DA)와 상기 프레임의 VLAN 인덱스와 일치하는 어드레스 인트리에 대해 상기 어드레스 테이블(82)을 서치한다. 상기 DA 룩업 엔진(220)은 12비트 해시 키를 생성하기위해서 도 8에 예시되는 것 처럼, 12-비트 해시 기능 회로(100)를 이용한다. 상기 DA 룩업 엔진(220)은 상기 SA 룩업 엔진(210)에 대해 논의한 바와 유사한 방식으로 상기 해시 키를 생성하며, 차이점은 상기 해시 기능 회로(100)가 상기 서치 키와 해시 키를 생성하기 위해 목적지 어드레스 정보를 이용한다는 것이다. 그 다음, 상기 DA 룩업 엔진(220)은 상기 어드레스 테이블(82)의 빈 번호를 연산하기위해 상기 해시 키의 하위 POLYEN 비트들을 사용한다. 그 다음, 상기 DA 룩업 엔진(220)은 상기 어드레스 테이블(82)에서 DA/VLAN 인덱스 일치를 위한 적절한 빈 리스트를 서치한다. 만일 일치가 발견되면, 상기 DA 룩업 엔진(220)은 상기 어드레스 엔트리의 포트 벡터 필드를 이용하고 상기 포트 벡터 필드 정보를 진출(egress) 룰 엔진(230)으로 전달한다. 상기 DA 룩업 엔진(220)이 DA/VLAN 인덱스 일치를 검출하지 못하면, 상기 프레임은 상기 VLAN의 모든 멤버들에 대해서 "플러디드(flooded)" 되어야만 한다. 이러한 경우, 상기 DA 룩업 엔진(220)은 모든 포트들이 상기 프레임을 전송한다는 것을 나타내기위해 세트된다.After the SA lookup engine 210 is complete and a new entry is added, if necessary, the DA lookup engine 220 may then add an address whose VLAN and its address match the destination address DA and the VLAN index of the frame. The address table 82 is searched for entries. The DA lookup engine 220 uses a 12-bit hash function circuit 100, as illustrated in FIG. 8, to generate a 12-bit hash key. The DA lookup engine 220 generates the hash key in a manner similar to that discussed for the SA lookup engine 210, the difference being that the hash function circuit 100 is the destination for generating the search key and the hash key. It uses address information. The DA lookup engine 220 then uses the lower POLYEN bits of the hash key to compute the bin number of the address table 82. The DA lookup engine 220 then searches for an appropriate empty list for DA / VLAN index matching in the address table 82. If a match is found, the DA lookup engine 220 uses the port vector field of the address entry and passes the port vector field information to an egress rule engine 230. If the DA lookup engine 220 does not detect a DA / VLAN index match, the frame must be "flooded" for all members of the VLAN. In this case, the DA lookup engine 220 is set to indicate that all ports transmit the frame.

상기 DA 룩업 엔진(220)이 상기 포트 벡터들 생성한 후, 상기 진출 룰 엔진(230)은 수신 포트 번호와 VLAN ID 정보에 따르는 포트 벡터 정보를 수신한다.그 다음, 상기 진출 룰 엔진(230)은 상기 프레임에 대한 전송 디스크립터를 생성한다.After the DA lookup engine 220 generates the port vectors, the advance rule engine 230 receives port vector information according to a reception port number and VLAN ID information. Next, the advance rule engine 230 receives the port vector information. Generates a transport descriptor for the frame.

도 9는 본 발명의 실시예에 따르는 전송 디스크립터의 구성을 예시한다. 도 9에 따르면, 우선순위 클래스 필드는 한-비트의 필드이며, 이는 예를 들어 높은 우선순위 또는 낮은 우선순위로 상기 프레임 포인터 반드시 위치되어야 하는 출력 우선순위 큐를 나타낸다.9 illustrates a configuration of a transport descriptor according to an embodiment of the present invention. According to FIG. 9, the priority class field is a one-bit field, which indicates an output priority queue that must be located, for example, the frame pointer at high 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, which identifies each port (s) that should receive the data frame for transmission to its destination address. Bit 0 of the port vector field corresponds to port 0 (handling port), bits 1-12 individually correspond to MAC ports 1-12 (10/100 Mb / s ports), Bit 13 corresponds to the gigabit port 24 and bit 14 corresponds to the expansion port 30.

상기 언태그된 세트 필드는 4-비트 필드이며, 이는 어떠한 포트들이 프레임들을 전송하기 전에 VLAN 태그 헤더들을 제거해야만 하는 가를 나타낸다. 상기 언태그된 세트는 언테그된 세트 테이블에서 얻어진다. 상기 Rx 포트는 4-비트 필드이며, 이는 상기 프레임이 수신되는 포트를 나타낸다.The untagged set field is a 4-bit field, which indicates which ports should remove VLAN tag headers before sending frames. The untagged set is obtained from an untagged set table. The Rx port is a 4-bit field, which indicates the port on which the frame is received.

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

필수적인 전송 정보가 획득되면, 상기 진출 룰 엔진(230)은 도 3에 도시한 바와 같이 큐잉하기 위해서 전송 디스크립터를 상기 포트 벡터 FIFO(56)로 출력한다.Once the necessary transmission information is obtained, the advance rule engine 230 outputs a transmission descriptor to the port vector FIFO 56 for queuing as shown in FIG.

트렁킹(TRUNKING) 기능TRUNKING function

상술된 바와 같이, 상기 멀티포트 스위치(12)는 10/100 Mb/s 동작이 가능한 12개의 포트들을 구비한다. 트렁킹은 동일한 2개의 디바이스들 간의 2개 이상의 점-대-점 연결을 단일 네트워크 링크로서 처리하는 기술이다. 트렁킹은 상기 멀티포트 스위치(12)가 예를 들면 2개의 네트워크 스테이션들, 2개의 스위치들 또는 서버와 스위치와 같은 2개의 디바이스들간의 더 높은 대역폭 경로를 상기 두개의 종단(end) 디바이스들 간의 트렁크 전송 경로를 형성하는 다중 포트들을 링크시킴으로써 획득하도록 한다.As described above, the multiport switch 12 has 12 ports capable of 10/100 Mb / s operation. Trunking is a technique that treats two or more point-to-point connections between the same two devices as a single network link. Trunking allows the multiport switch 12 to trunk between the two end devices, for example two network stations, two switches, or a higher bandwidth path between two devices, such as a server and a switch. Acquisition by linking multiple ports forming a transmission path.

예를 들면, 상기 멀티포트 스위치(12) 상의 4개의 포트들이 100Mb/s 데이터 전송 속도로 설계되고, 상기 트렁킹 배치가 상기 4개의 포트들이 단일 트렁크를 형성하도록 서로 링크시키는 것을 생각해본다. 그 결과 트렁크는 상기 2개의 종단 디바이스들 간의 400Mb/s 링크를 야기하면서, 상기 4개의 포트들을 통하여 데이터를 전송하고/수신할 수 있다.For example, consider that four ports on the multiport switch 12 are designed for a 100 Mb / s data rate, and the trunking arrangement links the four ports together to form a single trunk. As a result, the trunk can transmit / receive data over the four ports, causing a 400 Mb / s link between the two end devices.

본 발명의 실시예를 통하여, 상기 멀티포트 스위치(12)는 3개의 독립 트렁크들을 지원하고, 각 독립 트렁크는 2개 내지 4개의 포트들을 지원할 수 있다. 이 실시예에서, 상기 멀티포트 스위치(12) 상의 12개의 10/100Mb/s 포트들은 도 10에서도시된 바와 같이, 3개의 트렁크 블록들로 분리된다. 도 10에서, 제 1 트렁크 블록, 트렁크1은 포트1 내지 4를 구비하고, 제 2 트렁크 블록, 트렁크2는 포트 5내지 8을 구비하고, 제 2 트렁크 블록, 트렁크3은 포트 9내지 12를 구비한다. 트렁크 블록 내에서, 2개 내지 4개의 인접한 포트들은 단일 트렁크로 결합될 것이다.Through the embodiment of the present invention, the multiport switch 12 may support three independent trunks, and each independent trunk may support two to four ports. In this embodiment, twelve 10/100 Mb / s ports on the multiport switch 12 are separated into three trunk blocks, as shown in FIG. In FIG. 10, the first trunk block, trunk 1 has ports 1 to 4, the second trunk block, trunk 2 has ports 5 to 8, and the second trunk block, trunk 3 has ports 9 to 12. do. Within the trunk block, two to four adjacent ports will be combined into a single trunk.

도 10은 본 발명의 바람직한 실시예에 따른 12개의 10/100Mb/s를 위한 트렁크 구성원 결합을 도시한다. 도 10에서, "T"는 상기 포트가 트렁크내에 포함되는 것을 나타내고, "-"는 상기 포트가 트렁크 내에 포함되지 않아서, 즉 독립 포트로서 사용될 수 있음을 나타낸다. 상기 실시예에서 상술된 바와 같이, 2개 내지 4개의 인접한 포트들은 단일 트렁크를 형성하도록 결합될 수 있다. 예를 들면, 도 10을 참조하면, 포트1 및 2는 엔트리(A)에서 도시된 2개-링크 트렁크를 형성하도록 결합될 수 있다. 그러나, 포트1 및 3은 서로 인접하지 않기 때문에 2개-링크 트렁크를 형성하도록 결합될 수 없다.10 illustrates trunk member coupling for twelve 10/100 Mb / s according to a preferred embodiment of the present invention. In FIG. 10, "T" indicates that the port is included in the trunk, and "-" indicates that the port is not included in the trunk, that is, can be used as an independent port. As described above in this embodiment, two to four adjacent ports may be combined to form a single trunk. For example, referring to FIG. 10, ports 1 and 2 can be combined to form the 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 another embodiment, the multiport switch 12 will include fewer or more ports in a single trunk, up to the maximum number of ports of the multiport switch 12. Further, in other embodiments, the multiport switch 12 will be configured without limitation in that the ports can be linked to each other. For example, ports 1, 3, 5, 7 and 9 can be combined into a 5-link trunk.

상기 호스트 CPU(32)는 특정 네트워크 요청들을 기준으로, 예를 들면 종단 디바이스들이 100Mb/s이상의 대역폭을 구비한 데이터 링크를 요구하는 것을 기준으로 하여 특정 트렁크 구성을 설정한다. 초기에, 상기 호스트 CPU(32)는 포트들을도 4에서 나타난 바와 같이, 상기 각각의 포트 IRC 제어 레지스터(114a) 내지 (114l)의 트렁크 제어 비트들을 설정함으로써 특정 트렁크들로 할당한다. 본 발명의 실시예에 따라, 상기 멀티포트 스위치(12)는 12개의 10/100Mb/s 포트들에 대한 하나의 포트 IRC 제어 레지스터(114)를 포함한다. 다른 구성에서, 단일 레지스터는 상기 12개의 10/100 Mb/s 포트들을 저장하기 위해 사용될 수 있다.The host CPU 32 establishes a particular trunk configuration on the basis of specific network requests, for example based on the end devices requesting a data link with a bandwidth of 100 Mb / s or more. Initially, the host CPU 32 assigns ports to specific trunks by setting trunk control bits of the respective port IRC control registers 114a through 114l, as shown in FIG. In accordance with an embodiment of the invention, the multiport switch 12 includes one port IRC control register 114 for twelve 10/100 Mb / s ports. In another configuration, a single register can be used to store the twelve 10/100 Mb / s ports.

도 4를 참조하면, 각 포트 IRC 제어 레지스터(114)는 2개의 트렁크 제어 비트들을 구비한다: 트렁크 비트와 트렁크_능동 비트. 일련의 트렁크 비트는 상기 대응하는 포트가 상기 트렁크의 포트임을 나타낸다. 일련의 트렁크_능동 비트는 상기 대응하는 포트가 상기 트렁크의 능동 포트임을 나타낸다.4, each port IRC control register 114 has two trunk control bits: trunk bit and trunk_active bit. A series of trunk bits indicates that the corresponding port is a port of the trunk. A series of trunk_active bits indicates that the corresponding port is an active port of the trunk.

하기의 표1은 트렁크 제어 비트들의 다양한 조합들 및, 프레임들이 상기 조합들을 기준으로 하여 전송되는 방법을 정리한다.Table 1 below summarizes the various combinations of trunk control bits and how frames are transmitted based on the combinations.

트렁크trunk 트렁크_능동Trunk_active 00 XX 포트는 트렁크 내에 있지 않다. 상기 포트를 목적으로 하는 프레임들은 다른 포트로 재전송되지 않을 것이다.The port is not in the trunk. Frames destined for that port will not be retransmitted to another port. 1One 00 포트는 상기 트렁크의 부분이나, 링크가 실패하였기 때문에 능동적이지 않다. 상기 포트를 목적으로 하는 프레임들은 상기 트렁크 내의 다른 포트로 재전송될 것이다.The port is part of the trunk but is not active because the link failed. Frames destined for the port will be retransmitted to another port in the trunk. 1One 1One 포트는 상기 트렁크의 능동부분이다. 프레임들은 상기 포트로부터 전송될 수 있다.The port is the active part of the trunk. Frames may be sent from the port.

표 1에서, 상기 트렁크 비트가 "0"이면, 대응하는 포트는 트렁크의 부분이 아니고, 상기 포트를 목적으로 하는 프레임들은 상기 트렁크_능동 비트와 관계없이, 다른 포트로 재전송되지 않을 것이다. 상기 트렁크 비트가 "1"이고, 트렁크_능동 비트가 "0"인 때, 상기 대응하는 포트는 상기 트렁크의 부분이나, 링크 실패로 인하여 능동이 아닐 것이다. 상기 포트를 목적으로 하는 프레임들은 상기 트렁크내의 다른 포트로 재전송될 것이다. 상기 트렁크 비트가 "1"이고, 상기 트렁크_능동 비트가 "1"인 때, 상기 대응하는 포트는 상기 트렁크의 능동 부분이고 프레임들은 상기 포트로부터 전송될 수 있으며, 하기에서 보다 상세히 설명된다.In Table 1, if the trunk bit is "0", the corresponding port is not part of the trunk, and frames destined for the port will not be retransmitted to another port, regardless of the trunk_active bit. When the trunk bit is "1" and the trunk_active bit is "0", the corresponding port will not be active due to part of the trunk, or link failure. Frames destined for the port will be retransmitted to another port in the trunk. When 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 the 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, using the port IRC control registers 114a through 114l to store trunking information allows the present invention to support trunking without specific trunking information in the IRC address table 82. In addition, the use of 2 bits per port, i.e., the use of trunk and trunk_active bits, representing trunk members, means that the host CPU 32 is downlink / restored or the host CPU 32 is configured for network trunking. It is possible to reconfigure the trunk without changing the IRC address table 82 when changing. For example, consider the host CPU 32 removing port 2 as an active port on trunk 1. The host CPU 32 performs the removal by deleting the trunk_active bit in the port IRC control register 114b.

상술된 바와 같이, 프레임이 수신된 때, 상기 IRC(40)는 진입 룰 엔진(200), SA 룩업 엔진(210), DA 룩업 엔진(220) 및 진출 룰 엔진(230)을 각각 통하여, 4 단계로 상기 프레임을 처리한다. 상기 DA 룩업 엔진(220)이 상기 DA 룩업을 완성한 후, 상기 진출 룰 엔진(230)는 상기 포트 벡터 정보를 수신하여 검사하고, 상기 포트 IRC 제어 레지스터(114)로부터 상기 프레임이 트렁크의 부분인 포트를 통하여 전송되는지를 판단한다. 상기 프레임이 트렁크 포트를 통하여 전송된 때, 상기 진출 룰 엔진(230)은 상기 프레임이 전송되는 상기 트렁크 내의 특정 전송 포트를 판단한다.As described above, when a frame is received, the IRC 40 passes through the entry rule engine 200, the SA lookup engine 210, the DA lookup engine 220, and the advance rule engine 230, respectively. Process the frame with. After the DA lookup engine 220 completes the DA lookup, the advance rule engine 230 receives and inspects the port vector information, and the port from the port IRC control register 114 where the frame is part of a trunk. Determine whether it is transmitted through. When the frame is transmitted through a trunk port, the advance rule engine 230 determines a particular transmission port in the trunk through which the frame is 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 associated with trunking. In step 200 of FIG. 11, the advance rule engine 230 receives the port vector information and the reception port information from the DA lockup engine 220. Next, in step 202, the advance rule engine 230 compares the port vector information with the information stored in the corresponding IRC port control register 114. The advance rule engine 230 determines whether the transmission port is part of a trunk. That is, the advance rule engine 230 examines the trunk bit in each port IRC control register 114 corresponding to the port identified by the port vector.

모든 전송 포트들이 트렁크일 일부가 아니면, 즉 상기 트렁크 비트들이 모두 "0"인 때, 단계(204)에서 상기 진출 룰 엔진(230)은 상기 포트 벡터 FIFO(56)으로 전송 기술자를 출력한다. 그러나, 전송 포트가 트렁크의 일부인 때, 특 상기 트렁크 비트가 "1"이면, 상기 진출 룰 엔진(230)은 단계(206)에서 상기 트렁크 포트들에 대응하는 상기 포트 벡터 내의 모든 비트들을 마스크 아웃(mask out)시킨다.If all of the transport ports are not part of a trunk, i.e. when the trunk bits are all "0", then in step 204 the outgoing rule engine 230 outputs a transmission descriptor to the port vector FIFO 56. However, when the transport bit is part of a trunk, especially if the trunk bit is "1", the outgoing rule engine 230 masks out all the bits in the port vector corresponding to the trunk ports in step 206. mask out).

다음으로, 단계(208)에서, 상기 진출 룰 엔진(230)은 트렁크 맵핑 동작을 수행하여 상기 프레임이 전송되는 포트를 결정한다. 도 12에서 나타난 실시예에 따르면, 상기 트렁크 맵핑 로직은 배타적 OR(XOR) 게이트(120)를 포함한다. 도 12에 따르면, 상기 트렁크 맵핑 로직은 상기 프레임의 (SA), (DA)의 2개의 최하위 비트들과, 2 비트 출력을 생성하는 연속적인 XOR 비트들을 수신한다. 즉, 상기 트렁크 맵핑 로직은 상기 프레임의 (SA), (DA)의 최하부 비트를 XOR시키고, 그리고 상기 프레임의 (SA), (DA)의 두번째 최하부 비트를 XOR한다. 상기 진출 룰 엔진(230)은 상기 2 비트 출력을 기준으로 하여, 상기 데이터를 전송하기 위해 상기 트렁크 내의 포트들 중의 하나를 선택한다.Next, in step 208, the advance rule engine 230 performs a trunk mapping operation to determine the port to which the frame is transmitted. According to the embodiment shown in FIG. 12, the trunk mapping logic includes an exclusive OR (XOR) gate 120. According to FIG. 12, the trunk mapping logic receives two least significant bits of (SA), (DA) of the frame, and successive XOR bits that produce a two bit output. That is, the trunk mapping logic XORs the least significant bits of (SA), (DA) of the frame, and XORs the second least significant bit of (SA), (DA) of the frame. The advance rule engine 230 selects one of the ports in the trunk to transmit the data based on the 2-bit output.

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

예를 들면, 상기 포트 벡터가 상기 프레임이 포트2상으로 전송되는 것을, 즉 상기 15-비트 중의 비트 2가 세트임을 나타내는 정보를 포함하고, 포트 IRC 제어 레지스터2(114b)가 포트2가 트렁크 1의 능동 구성원임을, 즉 두 트렁크 및 트렁크_능동 비트가 "1"임을 타나내는 경우를 생각해 보라. 또한, 수신된 프레임의 목적지 어드레스의 2개의 최하부 비트들이 "10"임을 생각해 보라. 도 12를 참조하면, 상기 진출 룰 엔진(230)이 "1"과 "0"을 즉, 상기 SA와 DA의 LSB들을 각각 XOR 게이트(120)를 통하여 XOR하고, "1"을 출력한다. 상기 진출 룰 엔진(230)은 "0"과 "1"을, 즉 상기 SA 및 DA의 두번째 LSB를 각각 XOR 게이트(120)를 통하여 XOR하고 "1"을 출력한다. 따라서, 상기 예의 상기 XOR 게이트(120)의 출력은 "11"이다. 상기 경우, 상기 진출 룰 엔진(230)은 도 10에서 도시된 바와 같이, 트렁크1의 4번째 포트 즉, 포트4를 선택한다.For example, the port vector contains information indicating that the frame is transmitted on port 2, that is, bit 2 of the 15-bit is set, and port IRC control register 2 114b indicates that port 2 is trunk 1; Consider the case of indicating that it is an active member of, i.e., both trunk and trunk_active bits are "1". Also consider that the two least significant bits of the destination address of the received frame are "10". Referring to FIG. 12, the advance rule engine 230 XORs "1" and "0", that is, LSBs of the SA and DA through the XOR gate 120 and outputs "1". The advance rule engine 230 XORs "0" and "1", that is, the second LSBs of the SA and the DA through the XOR gate 120 and outputs "1". Thus, the output of the XOR gate 120 in the example is " 11 ". In this case, the advance rule engine 230 selects the fourth port of trunk 1, that is, port 4, as shown in FIG.

다른 구성에서, 다른 트렁크 맵핑 함수들이 데이터 프레임을 전송하는 전송 포트를 결정하는데 사용될 것이다. 장점으로, 본 발명에서 사용된 특정 트렁크 맵핑 함수는 상기 트렁크 내의 포트들 간에서 상대적으로 동등하게 데이터 프레임들의 전송을 분배함으로써 상기 2개의 단부 디바이스간의 효율적인 데이터 전송 속도를 최적화시킨다. 또한, 4포트 이상이 단일 트렁크에 포함된 구성에서, 사용된 트렁크 맵핑 함수는 상기 트렁크 포트를 선택하기 위해 사용되는 2개의 비트보다 더 많은 비트를 요구할 것이다. 예를 들면, 만약 8개의 포트들이 트렁크에 포함되었다면, 3 비트 출력이 상기 8포트들 중에서 출력 포트를 선택하기 위해 요청될 것이다.In other configurations, other trunk mapping functions may be used to determine the transport port that transmits the data frame. Advantageously, the particular trunk mapping function used in the present invention optimizes the efficient data transfer rate between the two end devices by distributing the transmission of data frames relatively equally between 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 bits than the two bits used to select the trunk port. For example, if eight ports were included in the trunk, a three bit output would be required to select an output port among the eight ports.

다음으로, 단계(210)에서, 상기 진출 룰 엔진(230)은 단계(208)에서 선택된 상기 포트가 상기 트렁크의 능동 포트인지를 판단한다. 즉, 상기 진출 룰 엔진(230)이 단계(208)에서 선택된 포트에 대한 상기 포트 IRC 제어 레지스터(114)의 트렁크 비트가 상기 포트가 상기 트렁크의 부분인 것을 나타내는 "1"이고, 상기 트렁크_능동 비트가 상기 포트가 상기 트렁크 내의 능동 링크임을 나타내는 "1"인지를 판단한다.Next, in step 210, the advance rule engine 230 determines whether the port selected in step 208 is an active port of the trunk. That is, the exit rule engine 230 is the trunk bit of the port IRC control register 114 for the port selected in step 208 is " 1 " indicating that the port is part of the trunk, and the trunk_active Determines whether a bit is "1" indicating that the port is an active link in the trunk.

단계(210)에서의 판단이 "아니오"이면, 상기 진출 룰 엔진(230)은 단계(212)에서 동일 트렁크에서 다른 포트를 선택한다. 상기 실시예에 따라, 상기 진출 룰 엔진(230)은 도 12에서 화살표로 나타난바와 같이, 상기 트렁크 블록 내의 다음의 더 높은 포트를 선택한다. 예를 들면, 만약 상기 트렁크 내의 제 3 포트가 단계(208)에서 선택되고 상기 진출 룰 엔진(230)이 단계(210)에서 상기 선택된 포트가 상기 트렁크의 능동 구성원이 아니라고 판단하면, 상기 진출 룰 엔진(230)은 상기 트렁크 내의 제 4 포트를 선택한다. 상기 진출 룰 엔진은 단계(210)으로 되돌아가고 상기 선택된 포트가 상기 트렁크의 능동 구성원인 때까지 상기 프로세스를반복한다. 예를 들면, 만약 상기 트렁트 블록의 제 4 포트가 단계(212)에서 선택되고, 상기 제 4 포트가 상기 트렁크의 능동 구성원이 아니면, 상기 진출 룰 엔진(230)은 상기 트렁크 블록의 제 1 포트를 선택할 것이다. 본 발명의 다른 실시예에서, 다른 포트를 선택하는 다른 방법은 채용될 수 있고, 예를 들면, 상기 선택된 포트가 상기 트렁크 내의 능동 링크가 아닌 때 상기 트렁크블록 내의 다음 더 낮은 포트를 선택할 것이다.If the determination at step 210 is no, the advance rule engine 230 selects another port in the same trunk at step 212. According to this embodiment, the advance 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 exit rule engine 230 determines in step 210 that the selected port is not an active member of the trunk, the exit rule engine 230 selects a fourth port in the trunk. The advance rule engine returns to step 210 and repeats the process until the selected port is an active member of the trunk. For example, if the 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 exit rule engine 230 may be configured to use the first port of the trunk block. Will choose. In another embodiment of the present invention, another method of selecting another port may be employed, for example, selecting the next lower port in the trunk block when the selected port is not an active link in the trunk.

상기 트렁크 내의 능동 포트가 선택된 후, 단계(214)에서 상기 데이터 프레임이 상기 프레임이 전송되는 동일 트렁크의 부분인 트렁크 포크에서 수신되었는지를 검사한다. 즉, 상기 진출 룰 엔진(230)은 상기 프레임이 수신된 상기 수신 포트에 대응하는 상기 포트 IRC 제어 레지스터(114)의 내용을 상기 트렁크 비트가 세트인지를 판단하기 위해 검사한다. 상기 단계(214)에서의 판단이 "아니오"이면, 상기 진출 룰 엔진(230)은 전송 설명자를 단계(218)에서 상기 포트 벡터 FIFO(56)로 출력한다. 단계(214)에서의 판단이 "예"이면, 상기 진출 룰 엔진(230)은 단계(216)에서, 상기 수신 포트로서 동일 트렁크내에 포함된 포트(들)에 대응하는 포트 벡터내의 모든 비트들을 마스크 아웃시킨다. 이 방법으로, 상기 진출 룰 엔진(230)은 트렁크 포트로 수신된 데이터 프레임들이 동일 트렁크 상에서 전송되지 않음을 확증한다. 장점으로, 그럼으로써 데이터 프레임을 그 소스로 다시 전송하는 것과 관련된 처리 시간을 감소시킨다.After the active port in the trunk is selected, in step 214 it is checked whether the data frame was received at a trunk fork that is part of the same trunk to which the frame is sent. That is, the advance rule engine 230 checks the contents of the port IRC control register 114 corresponding to the receiving port where the frame is received to determine whether the trunk bit is set. If the determination at step 214 is no, then the advance rule engine 230 outputs a transfer descriptor to the port vector FIFO 56 at step 218. If the determination at step 214 is YES, then the advance rule engine 230 masks at step 216 all the bits in the port vector corresponding to the port (s) contained in the same trunk as the receiving port. Let out. In this way, the exit rule engine 230 confirms that data frames received at the trunk port are not transmitted on 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 advance rule engine 230 includes the port vector to the port vector FIFO 56 and outputs a transmission descriptor. The flowchart shown in FIG. 11 can also be applied to data frames received by the multiport switch 12. However, when the host CPU 32 initiates the transmission, the IRC 40 does not change the port vector information generated by the host CPU 32, thereby performing the trunking algorithm shown in FIG. Evade.

네트워크 인터페이스 디비이스에서의 트렁킹에 대한 시스템 및 방법이 개시되었다. 본 발명의 장점은 상기 멀티포트 스위치(12)가 상기 어드레스 테이블(82) 내의 특정 트렁킹 정보를 저장함이 없이 트렁킹을 지원하고, 그럼으로써 상기 어드레스 테이블(82)을 검색하는데 걸리는 시간을 감소시킬 뿐만 아니라, 상기 어드레스 테이블(82)의 크기를 감소시킨다. 본 발명의 다른 장점은 트렁킹 변화가 상기 어드레스 테이블(82)의 재구성없이, 신속하고 효율적으로 수행되고, 그럼으로써 잠재 네트워크 고장시간을 감소시킨다.A system and method for trunking in a network interface device have been disclosed. An advantage of the present invention is that the multiport switch 12 supports trunking without storing specific trunking information in the address table 82, thereby not only reducing the time taken to search the address table 82. The size of the address table 82 is reduced. Another advantage of the present invention is that trunking changes are performed quickly and efficiently, without reconfiguration of the address table 82, thereby reducing potential network downtime.

상기 개시에서, 본 발명의 바람직한 실시예가 개시되나, 본 발명은 하기에서 표현되는 바와 같이 본 발명의 범위 내에서의 변경들과 변화들이 가능하고, 다른 조합들과 환경에서도 사용가능한 것으로 이해되어야 한다.In the above disclosure, preferred embodiments of the invention are disclosed, but it is to be understood that the invention is capable of modifications and variations within the scope of the invention as expressed below, and that they may be used in other combinations and environments.

Claims (18)

스테이션들 간의 데이터 프레임의 전송을 제어하고 트렁킹을 지원하는 멀티포트 스위치에 있어서, 상기 멀티포트 스위치는:A multiport switch for controlling the transmission of data frames between stations and supporting trunking, the multiport switch comprises: 어드레스 정보 및 데이터 전송 정보를 저장하는 테이블과;A table for storing address information and data transfer information; 결정 수행 엔진으로 구성되고, 상기 결정 수행 엔진은:And a decision making engine, the decision making engine: 상기 테이블을 검색하여 데이터 프레임이 전송되는 포트를 식별하고,Search the table to identify the port on which the data frame is sent; 상기 테이블을 참조함이 없이, 상기 식별된 포트가 트렁크의 부분인지를 판단하고,Without referring to the table, it is determined whether the identified port is part of a trunk, 상기 식별된 포트가 트렁크의 부분인 때, 상기 데이터 프레임을 전송하는 전송 포트를 결정하는 것을 특징으로 하는 멀티포트 스위치.And when the identified port is part of a trunk, determines a transmission port for transmitting the data frame. 제 1 항에 있어서, 상기 결정 수행 엔진은 트렁크 맵핑 함수를 수행하고 상기 전송 포트를 나타내는 값을 출력하도록 되는 것을 특징으로 하는 멀티포트 스위치.2. The multiport switch of claim 1, wherein the determination execution engine performs a trunk mapping function and outputs a value indicating the transmission port. 제 2 항에 있어서, 상기 결정 수행 엔진은 데이터 전송 정보를 생성하고; 상기 트렁크 맵핑 함수로부터의 출력을 기준으로 하여 상기 데이터 전송 정보를 변경하도록 되는 것을 특징으로 하는 멀티포트 스위치.3. The method of claim 2, wherein the decision making engine is further configured to generate data transmission information; And change the data transmission information based on the output from the trunk mapping function. 제 2 항에 있어서, 상기 트렁크 맵핑 함수는:3. The trunk mapping function of claim 2, wherein the trunk mapping function is: 데이터 프레임의 소스 어드레스 및 목적직 어드레스 모두의 최하위 비트들의 소정의 개수를 수신하여 결과를 출력하도록 된 배차적 OR 게이트를 구비하는 것을 특징으로 하는 멀티포트 스위치.And a secondary OR gate configured to receive a predetermined number of least significant bits of both the source address and destination address of the data frame and output the result. 제 4 항에 있어서, 상기 결정 수행 엔진은:The engine of claim 4 wherein the decision making engine is: 상기 트렁크의 부분인 포트들에 대응하는 상기 데이터 전송 정보 내의 비트들을 마스크 아웃시키고;Mask out bits in the data transmission information corresponding to ports that are part of the trunk; 상기 전송 포트를 나타내는 상기 데이터 전송 정보 내의 비트를 세트시키도록 되는 것을 특징으로 하는 멀티포트 스위치.And set a bit in said data transmission information indicative of said transmission port. 제 5 항에 있어서, 상기 결정 수행 엔진은:6. The engine of claim 5 wherein the decision making engine is: 상기 데이터 프레임이 트렁크 포트로 수신된 때, 상기 데이터 프레임이 상기 트렁크 포트로서 동일 트렁크 내에 있는 포트로 전송되지 않음을 확증하기 위해, 상기 데이터 전송 정보를 변경하도록 되는 것을 특징으로 하는 멀티포트 스위치.And when said data frame is received at a trunk port, modifying said data transmission information to ensure that said data frame is not sent to a port in the same trunk as said trunk port. 제 1 항에 있어서, 상기 멀티포트 스위치는:The method of claim 1, wherein the multiport switch is: 상기 개별 포트들의 각각에 대한 트렁킹 정보를 저장하도록 된 메모리를 구비하고, 상기 결정 수행 엔진은 상기 식별된 포트가 상기 메모리의 내용을 기준으로 한 트렁크의 부분인지를 판단하도록 되는 것을 특징으로 하는 멀티포트 스위치.And a memory configured to store trunking information for each of the individual ports, wherein the determination execution engine is configured to determine whether the identified port is part of a trunk based on the contents of the memory. switch. 제 7 항에 있어서, 상기 메모리는:8. The apparatus of claim 7, wherein the memory is: 포트가 트렁크 포트인지를 나타내는 트렁크 필드와;A trunk field indicating whether the port is a trunk port; 상기 포트가 트렁크의 능동 부분인지를 나타내는 트렁크 능동 필드를 구비하는 것을 특징으로 하는 멀티포트 스위치.And a trunk active field indicating whether the port is an active part of a trunk. 스테이션들 간의 데이터 프레임들의 통신을 제어하고 트렁킹을 지원하도록 된 멀티포트 스위치에서, 상기 멀티포트는 어드레스 엔트리들을 저장하는 어드레스 테이블을 구비하고, 데이터 전송 정보를 생성하는 방법에 있어서, 상기 방법은:In a multiport switch adapted to control the communication of data frames between stations and to support trunking, the multiport has an address table for storing address entries, the method comprising: generating data transmission information; 데이터 프레임으로부터 정보를 수신하는 단계와;Receiving information from a data frame; 상기 수신된 정보를 기준으로 한 데이터 전송 정보에 대한 상기 어드레스 테이블을 검색하는 단계와;Retrieving the address table for data transmission information based on the received information; 상기 데이터 프레임이 트렁크의 부분인 포트를 통하여 전송되는지를 판단하는 단계 및;Determining whether the data frame is transmitted through a port that is part of a trunk; 상기 프레임이 트렁크의 부분인 포트를 통하여 전송된 때, 상기 어드레스 테이블을 참조함이 없이, 상기 데이터 프레임을 전송하는 전송 포트를 나타내는 값을 생성하는 단계를 포함하는 것을 특징으로 하는 데이터 전송 정보를 생성하는 방법.When the frame is transmitted through a port that is part of a trunk, generating a value indicating a transmission port for transmitting the data frame without referring to the address table. How to. 제 9 항에 있어서, 상기 생성 단계는:The method of claim 9, wherein said generating step: 트렁크 맵핑 함수를 수행하는 단계와 상기 전송 포트를 나타내는 상기 갑을출력하는 단계를 포함하는 것을 특징으로 하는 데이터 전송 정보를 생성하는 방법.And performing a trunk mapping function and outputting the value representing the transport port. 제 10 항에 있어서, 상기 방법은:The method of claim 10 wherein the method is: 상기 트렁크 맵핑 함수로부터의 출력을 기준으로 하여 상기 데이터 전송 정보를 변경하는 단계를 포함하는 것을 특징으로 하는 데이터 전송 정보를 생성하는 방법.Modifying 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시키고, 결과를 출력하는 단계와;XORing a predetermined number of least significant bits of both the source address and the destination address of the data frame and outputting a result; 상기 결과를 상기 전송 포트를 나타내는 값으로 맵핑하는 단계를 포함하는 것을 특징으로 하는 데이터 전송 정보를 생성하는 방법.Mapping the result to a value representing the transmission port. 제 12 항에 있어서, 상기 방법은:The method of claim 12 wherein the method is: 상기 트렁크의 부분인 포트들에 대응하는 데이터 전송 정보내의 비트들을 마스크 아웃시키는 단계와;Masking out bits in data transmission information corresponding to ports that are part of the trunk; 상기 전송 포트를 나타내는 상기 데이터 전송 정보 내의 비트를 세트하는 단계를 포함하는 것을 특징으로 하는 데이터 전송 정보를 생성하는 방법.And setting a bit in said data transmission information indicative of said transmission port. 제 13 항에 있어서, 상기 방법은:The method of claim 13, wherein the method is: 상기 데이터 프레임이 트렁크 포트상으로 수신된 때, 상기 프레임이 상기 트렁크 포트로서 동일 트렁크내에 있는 포트 상으로 전송되지 않음을 확증하기 위해, 상기 데이터 전송 정보를 변경하는 단계를 포함하는 것을 특징으로 하는 데이터 전송 정보를 생성하는 방법.Modifying the data transmission information when the data frame is received on a trunk port to assure that the frame is not transmitted on a port in the same trunk as the trunk port. How to generate transmission information. 스테이션들 간의 데이터 프레임들의 통신을 제어하고 트렁킹을 지원하도록 된 멀티포트 스위치에 있어서, 상기 멀티포트 스위치는:In a multiport switch adapted to control the communication of data frames between stations and to support trunking, the multiport switch comprises: 어드레스 정보와 데이터 전송 정보를 저장하는 테이블과;A table for storing address information and data transfer information; 상기 멀티포트 스위치의 포트들에 대응하는 다수의 프로그램 가능 레지스터와, 상기 각 프로그램 가능 레지스터는 상기 각 포트들 중의 한 포트에 대한 트렁킹 정보를 저장하도록 되고;A plurality of programmable registers corresponding to the ports of the multiport switch, and each programmable register configured to store trunking information for one of the respective ports; 결정 수행 엔진을 구비하고, 상기 결정 수행 엔진은:And a decision making engine, wherein the decision making engine: 상기 테이블을 검색하여 데이터 프레임에 대한 데이터 전송 정보를 생성하고,Search the table to generate data transmission information for a data frame, 상기 데이터 전송 정보와, 다수의 프로그램 가능 레지스터들의 내용을 기준으로 하여, 상기 데이터 프레임이 트렁크 포트를 통하여 전송되는지를 판단하고,Determining whether the data frame is transmitted through a trunk port based on the data transmission information and the contents of a plurality of programmable registers, 상기 프레임이 트렁크 포트를 통하여 전송된 때, 상기 데이터 프레임을 전송하는 전송 포트를 나타내는 값을 생성하도록 되는 것을 특징으로 하는 멀티포트 스위치.And when the frame is transmitted through a trunk port, generate a value indicating a transmission port for transmitting the data frame. 제 15 항에 있어서, 상기 멀티포트 스위치는:The method of claim 15, wherein the multiport switch is: 상기 데이터 프레임의 소스 어드레스와 목적지 어드레스 모두의 2개의 최하위 비트들을 수신하여 2-비트 출력을 생성하도록 된 배타적 OR 게이트를 구비하고, 상기 결정 수행 엔진은 상기 2-비트 출력을 기준으로 하여 상기 전송 포트를 나타내는 값을 생성하도록 되는 것을 특징으로 하는 멀티포트 스위치.And an exclusive OR gate configured to receive two least significant bits of both the source address and the destination address of the data frame to produce a two-bit output, wherein the decision making engine is configured to transmit the transmission port based on the two-bit output. Multiport switch, characterized in that to generate a value representing. 제 16 항에 있어서, 상기 결정 수행 엔진은:17. The engine of claim 16 wherein the decision making engine is: 상기 트렁크의 부분인 포트들에 대응하는 데이터 전송 정보내의 비트들을 마스크 아웃시키고,Mask out bits in data transmission information corresponding to ports that are part of the trunk, 상기 전송 포트를 나타내는 데이터 전송 정보내의 비트를 세트하도록 되는 것을 특징으로 하는 멀티포트 스위치.And setting a bit in data transmission information indicating said 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 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 true KR20010101360A (en) 2001-11-14
KR100577448B1 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100868804B1 (en) * 2003-09-10 2008-11-17 인텔 코포레이션 Multi-port device configuration
KR101044917B1 (en) * 2010-10-12 2011-06-28 주식회사 에이씨앤티시스템 Network switch system for checking link connection state and switch included in the same

Families Citing this family (5)

* 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
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
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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100868804B1 (en) * 2003-09-10 2008-11-17 인텔 코포레이션 Multi-port device configuration
KR101044917B1 (en) * 2010-10-12 2011-06-28 주식회사 에이씨앤티시스템 Network switch system for checking link connection state and switch included in the same

Also Published As

Publication number Publication date
EP1180285A1 (en) 2002-02-20
KR100577448B1 (en) 2006-05-10
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
US6445709B1 (en) Method and apparatus for finding a match entry using receive port number embedded in the port vector
US6460088B1 (en) Method and apparatus for port vector determination at egress
US6775290B1 (en) Multiport network switch supporting multiple VLANs per port
US6813266B1 (en) Pipelined access to address table in a network switch
US6292483B1 (en) Apparatus and method for generating an index key for a network switch routing table using a programmable hash function
US6515993B1 (en) Method and apparatus for manipulating VLAN tags
US6084877A (en) Network switch port configured for generating an index key for a network switch routing table using a programmable hash function
US6990102B1 (en) Parallel lookup tables for locating information in a packet switched network
US7027437B1 (en) Network switch multiple-port sniffing
US6680945B1 (en) Method and apparatus for support of tagging and untagging per VLAN per port
US6546010B1 (en) Bandwidth efficiency in cascaded scheme
US6732184B1 (en) Address table overflow management in a network switch
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
US7099325B1 (en) Alternately accessed parallel lookup tables for locating information in a packet switched network
US6731596B1 (en) Network switch having system for automatically detecting change in network node connection
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
US7031325B1 (en) Method and apparatus for enabling a network device to operate in accordance with multiple protocols
US6904043B1 (en) Apparatus and methods for storing and processing header information in a network switch
US6529503B1 (en) Apparatus and method for storing header information in a network switch
US6778547B1 (en) Method and apparatus for improving throughput of a rules checker logic
US6507564B1 (en) Method and apparatus for testing aging function in a 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