KR100577448B1 - Method and apparatus for trunking multiple ports in a network switch - Google Patents
Method and apparatus for trunking multiple ports in a network switch Download PDFInfo
- Publication number
- KR100577448B1 KR100577448B1 KR1020017008440A KR20017008440A KR100577448B1 KR 100577448 B1 KR100577448 B1 KR 100577448B1 KR 1020017008440 A KR1020017008440 A KR 1020017008440A KR 20017008440 A KR20017008440 A KR 20017008440A KR 100577448 B1 KR100577448 B1 KR 100577448B1
- Authority
- KR
- South Korea
- Prior art keywords
- port
- trunk
- frame
- data
- information
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
- H04L45/245—Link aggregation, e.g. trunking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/351—Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/205—Quality of Service based
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3027—Output queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/351—Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
- H04L49/352—Gigabit ethernet switching [GBPS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/354—Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/14—Multichannel or multilink protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
다수의 포트들을 통해 데이터 패킷들을 교환하도록 구성된 네트워크 스위치는 어드레스 테이블을 이용하여 프레임 전송 정보를 생성한다. 의사 결정 엔진은 프레임 전송 정보를 체크하여 프레임이 트렁크의 일부인 포트에 전송되어야 하는 지의 여부를 결정한다. 프레임이 트렁크 포트에 출력되어야 할 때, 의사 결정 엔진은 프레임을 전송할 포트를 결정한다. Network switches configured to exchange data packets over multiple ports use the address table to generate frame transmission information. The decision engine checks the frame transmission information to determine whether the frame should be sent to a port that is part of the trunk. When a frame is to be output to a trunk port, the decision engine determines the port to send the frame to.
Description
본 발명은 네트워크 통신에 관한 것으로서, 네트워크 스위치 내에 다수의 포트들을 트렁킹함으로써 고속 네트워크 링크를 제공하는 것에 관한 것이다. TECHNICAL FIELD The present invention relates to network communications, and to providing a high speed network link by trunking multiple ports within a network switch.
컴퓨터 네트워크에서는, 다수의 네트워크 스테이션들이 통신 매체를 통해 서로 접속된다. 예를 들어, 이서넷은 공통으로 이용되는 국부 영역 네트워크 방식으로서, 여기에서는 다수의 스테이션들이 단일의 공용 직렬 데이터 경로에 접속된다. 이러한 스테이션들은 종종 공용 데이터 경로와 이 경로에 접속된 스테이션들 사이에 위치하는 스위치에 의해 통신한다. 전형적으로, 이 스위치는 네트워크 상에서의 데이터 패킷들의 통신을 제어한다. In a computer network, multiple network stations are connected to each other via a communication medium. For example, Ethernet is a commonly used local area network scheme where multiple stations are connected to a single common serial data path. These stations often communicate by a switch located between the public data path and the stations connected to the path. Typically, this switch controls the communication of data packets on the network.
네트워크 스위치는, 프레임들을 수신한 다음 적절한 목적지들에게 전송하는 스위칭 논리를 포함한다. 프레임 전송 결정(frame forwarding decision)을 생성하기 위한 하나의 구성은 직접 어드레싱 방식을 이용하는 것인바, 이 방식에서 네트워크 스위치는 목적지 어드레스들에 대한 스위칭 논리를 저장하는 고정 어드레스 테이블(fixed address table)을 포함한다. 예를 들어, 소스 어드레스 및 목적지 어드레스를 나타내는 헤더 정보를 갖는 프레임이 네트워크 스위치에 의해 수신된다. 스위칭 논리는 소스 어드레스 및 목적지 어드레스를 룩업들로서 이용하여 고정 어드레스 테이블을 서치하여, 적절한 프레임 전송 정보를 찾는다. 스위치는 이 정보를 이용하여 프레임을 적절한 포트(들)에 전송한다. The network switch includes switching logic that receives the frames and then sends them to the appropriate destinations. One configuration for generating a frame forwarding decision is to use a direct addressing scheme, in which the network switch includes a fixed address table that stores switching logic for destination addresses. do. For example, a frame having header information indicating a source address and a destination address is received by the network switch. The switching logic searches the fixed address table using the source address and destination address as lookups to find the appropriate frame transfer information. The switch uses this information to send the frame to the appropriate port (s).
네트워크에 접속된 모든 스테이션들이 동시에 동작하면, 패킷들 간에 시간이 거의 없어지게 되어 공용 직렬 경로 상의 패킷 트래픽이 많아지게 된다. 또한, 네트워크 쓰루풋 요건으로 인해, 데이터가 그 목적지로 전송되는 속도를 증가시키는 것이 점점 중요하게 되었다. If all the stations connected to the network are operating at the same time, there is little time between packets, resulting in more packet traffic on the public serial path. In addition, due to network throughput requirements, it has become increasingly important to increase the speed at which data is sent to its destination.
데이터가 스테이션 간에 전송되는 속도를 증가시키는 하나의 구성은 2개의 스테이션들 간에 트렁크를 형성하기 위해 다수의 링크들을 결합하는 "트렁킹"(이는, 링크 집합(link aggregation)이라고도 일컬어진다)을 이용한다. 예를 들어, 스위치 상의 2개의 개별적인 포트들이 각각 100 Mb/s의 데이터 전송 속도를 지원하도록 구성된다고 가정하자. 트렁킹 방식은 2개의 포트들을 함께 연결하여 이러한 2개의 포트들을 통해 데이터를 송/수신함으로써, 2개의 스테이션들 간에 1개의 200Mb/s 링크를 형성한다. One configuration that increases the speed at which data is transmitted between stations uses "trunking" (also referred to as link aggregation), which combines multiple links to form a trunk between two stations. For example, assume that two separate ports on the switch are each configured to support a data transfer rate of 100 Mb / s. The trunking scheme connects the two ports together to send / receive data through these two ports, thus forming one 200 Mb / s link between the two stations.
이러한 트렁킹 방식이 갖는 단점은, 어드레스 테이블이 데이터를 전송할 특정 트렁크 포트를 포함한 적절한 트렁킹 정보를 저장해야 한다는 것이다. 즉, 어드레스 테이블은 특정 포트가 트렁크의 일부인지의 여부를 나타내는 정보 뿐 아니라, 데이터 전송 정보가 출력 포트가 트렁크의 일부임을 나타내는 경우, 트렁크의 어느 포트에 데이터를 전송해야 하는 지를 나타내는 정보를 저장해야 한다. 어드레스 테이블에 이러한 트렁킹 정보를 저장하게 되면, 어드레스 테이블의 물리적인 크기를 상당히 증가시키고 스위칭 논리를 상당히 복잡하게 함으로써, 프레임 전송 정보를 찾는 데에 걸리는 시간이 증가한다. The disadvantage of this trunking scheme is that the address table must store the appropriate trunking information, including the specific trunk port to which the data will be sent. That is, the address table should store not only information indicating whether a specific port is part of a trunk, but also information indicating which port of a trunk should be transmitted when data transmission information indicates that an output port is part of a trunk. do. Storing this trunking information in the address table increases the time it takes to find frame transfer information by significantly increasing the physical size of the address table and significantly complicating the switching logic.
또한, 저장된 트렁킹 정보에 대한 변경이 요구될 때, 즉, 네트워크 구성이 변경되면, 새로운 트렁킹 구성을 반영하도록 어드레스 테이블 또한 대응하게 변경되어야 한다. 이러한 어드레스 테이블의 재구성 과정은 시간 소모적이고 비용이 많이 들기 때문에, 네크워크 고장 시간(downtime)을 야기시킬 수 있다. In addition, when a change to the stored trunking information is required, that is, when the network configuration is changed, the address table must also be correspondingly changed to reflect the new trunking configuration. This reconfiguration of the address table is time consuming and expensive, which can lead to network downtime.
따라서, 어드레스 테이블에 트렁킹 정보를 저장하지 않으면서 트렁킹을 지원하는 스위치 장치의 필요성이 대두되었다. Accordingly, there is a need for a switch device that supports trunking without storing trunking information in an address table.
또한, 어드레스 테이블을 재프로그래밍하지 않으면서 트렁킹을 지원하고 트렁킹을 변경할 수 있는 스위칭 장치에 대한 필요성이 대두되었다. There is also a need for a switching device that can support trunking and change trunking without reprogramming the address table.
상기 및 다른 목적들은 본 발명에 의해 달성되는바, 본 발명의 멀티포트 스위치가 프레임 전송 결정을 행하기 위해 의사 결정 엔진(decision making engine)에 의해 이용되는 어드레스 엔트리들을 저장하는 어드레스 테이블을 포함한다. 이러한 의사 결정 엔진은, 트렁크의 일부인 출력 포트를 통해 프레임이 전송되어야 하는 지의 여부를 결정하기 위해 프레임 전송 정보를 조사하는 트렁킹 기능을 포함한다. 출력 포트가 트렁크의 일부이면, 의사 결정 엔진은 트렁크 맵핑 기능을 수행하여 프레임을 전송할 특정 포트를 결정한다. These and other objects are achieved by the present invention, which includes an address table in which the multiport switch of the present invention stores address entries used by a decision making engine to make frame transmission decisions. Such a decision engine includes a trunking function that examines frame transmission information to determine whether a frame should be transmitted over an output port that is part of a trunk. If the output port is part of a trunk, the decision engine performs the trunk mapping function to determine the specific port to send the frame.
본 발명의 일 양상에 따르면, 네트워크 스위치는 스테이션들 간의 데이터 프레임들의 통신을 제어하고 트렁킹을 지원하도록 구성된다. 이 스위치는 어드레스 정보 및 데이터 전송 정보를 저장하는 테이블을 포함한다. 이 스위치는 또한 테이블을 서치하고 데이터 프레임에 대한 데이터 전송 정보를 생성하도록 구성된 의사 결정 엔진을 포함한다. 이 의사 결정 엔진은 또한, 데이터 프레임이 트렁크의 일부인 포트를 통해 전송되어야 하는 지의 여부를 결정하고, 포트가 트렁크의 일부인 경우, 데이터 프레임을 전송할 전송 포트를 결정하도록 구성된다. According to one aspect of the invention, the network switch is configured to control the communication of data frames between stations and to support trunking. This switch includes a table that stores address information and data transfer information. The switch also includes a decision engine configured to search the tables and generate data transfer information for the data frames. The decision engine is also configured to determine whether a data frame should be sent over a port that is part of the trunk, and if the port is part of a trunk, determine a transmission port to which to send the data frame.
본 발명의 다른 양상은 스테이션들 간의 데이터 프레임들의 통신을 제어하는 멀티포트 스위치에 데이터 전송 정보를 생성하는 방법을 제공한다. 이 방법은 데이터 프레임으로부터 정보를 수신하는 단계, 및 수신된 정보에 기초하여 어드레스 테이블을 서치하여 데이터 전송 정보를 찾는 단계를 포함한다. 이 방법은 또한, 데이터 프레임이 트렁크의 일부인 포트를 통해 전송되어야 하는 지의 여부를 결정하는 단계를 포함한다. 이 방법은 또한, 프레임이 트렁크의 일부인 포트를 통해 전송되어야 할 때, 데이터 프레임을 전송할 전송 포트를 나타내는 값을 생성하는 단계를 포함한다. Another aspect of the invention provides a method of generating data transmission information at a multiport switch that controls communication of data frames between stations. The method includes receiving information from a data frame, and searching the address table based on the received information to find data transmission information. The method also includes determining whether a data frame should be sent over a port that is part of a trunk. The method also includes generating a value indicating a transmission port to which to transmit the data frame when the frame is to be transmitted through a port that is part of a trunk.
본 발명의 다른 장점들 및 특징들은 첨부 도면을 참조하여 설명되는 하기의 상세한 설명으로부터 당업자들에게 보다 명확해질 것이다. 도시되어 설명되는 실시예는 본 발명을 수행하는 최상의 모드를 제공한다. 본 발명은 본 발명의 범위를 벗어나지 않으면서 다양하고 명백한 관점들에서 변경될 수 있다. 따라서, 도면들은 제한적인 것이 아니라 예시적인 것으로서 간주되어야 한다. Other advantages and features of the present invention will become more apparent to those skilled in the art from the following detailed description, which is described with reference to the accompanying drawings. The illustrated and described embodiment provides the best mode for carrying out the present invention. The present invention can be changed in various and obvious aspects without departing from the scope of the invention. Accordingly, the drawings are to be regarded as illustrative rather than restrictive.
도 1은 본 발명의 일 실시예에 따른 다수의 포트 스위치를 포함하는 패킷 교환 네트워크의 블록도이다. 1 is a block diagram of a packet switched network including multiple port switches in accordance with one embodiment of the present invention.
도 2는 도 1의 다수의 포트 스위치의 블록도이다. FIG. 2 is a block diagram of multiple port switches of FIG. 1.
도 3은 도 2의 스위칭 서브시스템의 상세 블록도이다. 3 is a detailed block diagram of the switching subsystem of FIG. 2.
도 4는 본 발명의 일 실시예에 따른 도 2의 내부 룰 체커(internal rules checker)를 포함하는 시스템의 블록도이다. 4 is a block diagram of a system including the internal rules checker of FIG. 2 in accordance with an embodiment of the present invention.
도 5는 도 4의 IRC 어드레스 테이블의 구성을 도시한다. FIG. 5 shows a configuration of the IRC address table of FIG. 4.
도 6은 도 5의 IRC 어드레스 테이블의 IRC 어드레스 테이블 엔트리의 포맷을 도시한다. 6 illustrates the format of an IRC address table entry of the IRC address table of FIG. 5.
도 7은 선택된 빈(bin)에 대한 테이블 엔트리들을 식별하기 위한 링크된 리스트 체인들을 도시한다. 7 shows linked list chains for identifying table entries for a selected bin.
도 8은 도 2의 내부 룰 체커와 함께 이용하기 위한 해시 함수 회로를 도시한다. 8 illustrates a hash function circuit for use with the internal rule checker of FIG. 2.
도 9는 본 발명의 일 실시예에 따른 전송 기술자(forwarding descriptor)의 구성을 도시한다. 9 illustrates a configuration of a forwarding descriptor according to an embodiment of the present invention.
도 10은 본 발명의 일 실시예에 따른 트렁크 멤버십 편성(trunk membership combination)을 도시한다. 10 illustrates a trunk membership combination according to an embodiment of the present invention.
도 11은 본 발명의 일 실시예에 따른 트렁킹에 관련하여 프레임 전송 정보를 생성하는 방법을 나타낸 흐름도이다. 11 is a flowchart illustrating a method of generating frame transmission information in relation to trunking according to an embodiment of the present invention.
도 12는 본 발명의 일 실시예에 따른 트렁크 맵핑 논리를 나타낸다. 12 illustrates trunk mapping logic according to an embodiment of the present invention.
이제, 이서넷(IEEE 802.3) 네트워크와 같은 패킷 교환 네트워크에 있어서의 스위치를 예로 들어 본 발명에 대해 설명한다. 하지만, 하기에서 상세히 설명하는 바와 같이, 본 발명이 다른 패킷 교환 시스템들 및 일반적인 다른 타입의 시스템들에도 적용할 수 있다는 것은 명백하다. The present invention will now be described taking as an example a switch in a packet switched network such as an Ethernet (IEEE 802.3) network. However, as will be described in detail below, it is clear that the present invention can be applied to other packet switching systems and other types of systems in general.
스위치 아키텍쳐 개요Switch Architecture Overview
도 1은 본 발명이 유익하게 이용될 수 있는 예시적인 시스템의 블록도이다. 이 예시적인 시스템(10)은 이서넷(IEEE 802.3) 네트워크와 같은 패킷 교환 네트워크이다. 이러한 패킷 교환 네트워크는 네트워크 스테이션들 간의 데이터 패킷들의 통신을 가능하게 하는 통합 멀티포트 스위치들(IMS)(12)을 포함한다. 이 네트워크는 다른 구성들을 갖는 네트워크 스테이션들, 예를 들어 10Mb/s 또는 100 Mb/s의 네트워크 데이터 속도로 데이터를 송수신하는 12개의 10Mb/s 또는 100 Mb/s 네트워크 스테이션들(14)(이하, 10/100 Mb/s라 칭한다) 및 1Gb/s의 네트워크 속도로 데이터 패킷들을 송수신하는 1000Mb/s(즉, 1Gb/s) 네트워크 노드(22)를 포함할 수 있다. 기가비트 노드(22)는 서버, 또는 고속 백본 네트워크에 대한 게이트웨이가 될 수 있다. 이에 따라, 멀티포트 스위치들(12)은 네트워크 노드들(14 또는 22)로부터 수신한 데이터 패킷들을, 이서넷 프로토콜에 기초하여 적절한 목적지에 선택적으로 전송한다. 1 is a block diagram of an exemplary system in which the present invention may be advantageously employed. This
각 멀티포트 스위치(12)는 매체 접속 제어(MAC) 모듈(20)을 포함하는바, 이는 IEEE 802.3u 프로토콜에 따라 각각의 감소된 매체 독립 인터페이스들(RMII)(18)을 통해 10/100 Mb/s 물리층(PHY) 트랜스시버들(16)로/로부터 데이터 패킷들을 송/수신한다. 각 멀티포트 스위치(12)는 또한, 고속 네트워크 매체(28)를 통해 기가비트 노드(22)에 전송하기 위해 기가비트 PHY(26)와 데이터를 송수신하는 기가비트 MAC(24)을 포함한다. Each
각 10/100 Mb/s 네트워크 스테이션(14)은, 반이중 또는 전이중 이서넷 프로토콜에 따라, 매체(17)를 통해 대응하는 멀티포트 스위치(12)와 데이터 패킷들을 송수신한다. 이서넷 프로토콜 ISO/IEC 8802-3 (ANSI/IEEE 표준 802.3 1993년판)은 모든 스테이션들(14)이 동등하게 네트워크 채널을 액세스할 수 있게 하는 반이중 매체 접속 메커니즘을 정의한다. 반이중 환경에서의 트래픽은 매체(17) 상에서 구별되지 않는다. 그렇다기 보다는, 각 반이중 스테이션(14)은 캐리어 검출 다중 접근/충돌 검출(CSMA/CD)을 이용하여 매체 상의 트래픽을 감시하는 이서넷 인터페이스 카드를 포함한다. 네트워크 트래픽의 부재는 매체 상에서의 수신 캐리어의 비표명(deassertion)을 감지함으로써 검출된다. 전송할 데이터를 갖는 어떠한 스테이션(14)은, 매체 상에서의 수신 캐리어의 비표명 이후, 인터패킷 갭 간격(IPG)으로서 알려져있는 소정의 시간을 기다림으로써 채널을 액세스하고자 시도할 것이다. 다수의 스테이션들(14)이 네트워크 상에 전송할 데이터를 가지고 있으면, 각 스테이션들은 매체 상에서의 수신 캐리어의 비표명의 감지에 반응하여 그리고 IPG 간격 이후에 전송하고자 시도함으로써, 결과적으로 충돌을 야기시킬 수도 있다. 이에 따라, 전송 스테이션은 매체를 모니터하여, 동시에 데이터를 전송하는 다른 스테이션으로 인한 충돌이 있는 지의 여부를 결정한다. 충돌이 검출되면, 양쪽 스테이션들은 정지하고, 임의 시간을 기다린 다음, 전송을 재시도한다. Each 10/100 Mb / s network station 14 transmits and receives data packets with the corresponding
전이중 모드에서 동작하는 10/100 Mb/s 네트워크 스테이션들(14)은 이서넷 표준 IEEE 802.3u에 따라 데이터 패킷들을 송수신한다. 전이중 환경은, 각 링크 파트너 간에, 즉 10/100 Mb/s 네트워크 스테이션(14)과 대응하는 멀티포트 스위치(12) 간의 데이터 패킷들의 동시 송수신을 가능하게 하는 양방향의 점 대 점(point to point) 통신 링크를 제공한다. 10/100 Mb / s network stations 14 operating in full duplex mode transmit and receive data packets according to the Ethernet standard IEEE 802.3u. The full-duplex environment is a bi-directional point to point that allows simultaneous transmission and reception of data packets between each link partner, i.e. between the 10/100 Mb / s network station 14 and the corresponding
각 멀티포트 스위치(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
각 멀티포트 스위치(12)는 또한 규정된 프로토콜에 따라 다른 스위치들 간에 데이터를 전송하는 확장 포트(30)를 포함한다. 각 확장 포트(30)는 다수의 멀티포트 스위치들(12)이 개별적인 백본 네트워크로서 함께 캐스케이드(cascade)될 수 있게 한다. Each
도 2는 멀티포트 스위치(12)의 블록도이다. 이 멀티포트 스위치(12)는 프레임 전송 결정을 수행하는 의사 결정 엔진(40)과, 프레임 전송 결정에 따라 프레임 데이터를 전송하는 스위칭 서브시스템(42)과, 외부 메모리 인터페이스(44)와, 관리 정보 베이스(MIB) 카운터들(48a 및 48b)(총체적으로 48)과, 그리고 네트워크 스테이션들(14)과 기가비트 노드(22)를 서빙하는 이서넷(IEEE 802.3) 포트들 간의 데이터 패킷들의 라우팅을 지원하는 MAC(매체 접속 제어) 프로토콜 인터페이스들(20 및 24)을 포함한다. MIB 카운터들(48)은 관리 정보 베이스(MIB) 오브젝트 형태의 통계적 네트워크 정보를 호스트 CPU(32)에 의해 제어되는 외부 관리 엔티티에게 제공하는바, 이에 대해서는 하기에서 설명한다. 2 is a block diagram of the
외부 메모리 인터페이스(44)는, 예를 들어 동기 스태틱 랜덤 액세스 메모리(SSRAM)와 같은 외부 메모리(36)에 패킷 데이터를 외부적으로 저장할 수 있게 함으로써, 멀티포트 스위치(12)의 칩 크기를 최소화한다. 특히, 멀티포트 스위치(12)는 외부 메모리(36)를 이용하여, 수신된 프레임 데이터 및 메모리 구조들을 저장한다. 이 외부 메모리(36)는 바람직하게는 64 비트 폭의 데이터 경로 및 17 비트 폭의 어드레스 경로를 갖는 제로 버스 턴어라운드TM(ZBT)-SSRAM 또는 조인트 일렉트론 디바이스 엔지니어링 카운실(JEDEC) 파이프라인 버스트이다. 이 외부 메모리(36)는 64 비트 워드들의 128K의 상위 및 하위 뱅크들로서 어드레스가능하다. 이 외부 메모리(36)의 크기는 바람직하게는 적어도 1Mbytes이며, 데이터 전송은 파이프라인을 통해 모든 클럭 주기 마다 가능하다. 또한, 외부 메모리 인터페이스 클럭은 적어도 66MHz, 바람직하게는 100MHz 및 그 이상의 클럭 주파수들에서 동작한다. The
멀티포트 스위치(12)는 또한, 호스트 CPU(32)와 같은 외부 관리 엔티티가 멀티포트 스위치(12)의 전체적인 동작을 제어할 수 있게 하는 프로세싱 인터페이스(50)를 포함한다. 특히, 프로세싱 인터페이스(50)는 규정된 레지스터 액세스 공간 내에서 CPU 액세스들을 디코드하고, 구성 및 상태 레지스터들(52)에/로부터 구성 및 상태 값들을 기록/판독한다.
내부 룰 체커(IRC)로 일컬어지는 내부 의사 결정 엔진(40)은 수신된 데이터 패킷들에 대한 프레임 전송 결정을 행한다. An
멀티포트 스위치(12)는 또한, 포트 마다의 조건들의 상태를 클럭 아웃시키고 외부 LED 논리를 구동시키는 LED 인터페이스(54)를 포함한다. 외부 LED 논리는 인간이 판독할 수 있는 LED 디스플레이 요소들을 구동시킨다.
IRC(40)의 프레임 전송 결정을 실행하도록 구성된 스위칭 서브시스템(42)은 포트 벡터 선입선출(FIFO) 버퍼(56), 다수의 출력 큐들(58), 멀티카피 큐(60), 멀티카피 캐시(62), 프리 버퍼 큐(free buffer queue)(64) 및 재요구 큐(reclaim queue)(66)를 포함한다. The
MAC 유닛(20)은 각 포트에 대한 모듈들을 포함하는바, 각 모듈은 MAC 수신부, 수신 FIFO 버퍼, 전송 FIFO 버퍼 및 MAC 전송부를 포함한다. 네트워크 스테이션(14)으로부터의 데이터 패킷들은 대응하는 MAC 포트에 의해 수신된 다음, 대응하는 수신 FIFO에 저장된다. MAC 유닛(20)은 프리 버퍼 큐(64)로부터 프리 버퍼 위치(즉, 프레임 포인터)를 얻고, 수신된 데이터 패킷을 대응하는 수신 FIFO로부터 외부 메모리 인터페이스(44)로 출력하여, 프레임 포인터에 의해 지정되는 위치에서 외부 메모리(36)에 저장한다. The
IRC(40)는 데이터 버스를 모니터(즉, "스누프(snoop)")하여, 수신된 패킷의 프레임 포인터 값 및 헤더 정보(소스, 목적지 및 VLAN 어드레스 정보를 포함한다)를 결정한다. 이 IRC(40)는 헤더 정보를 이용하여, 어느 MAC 포트가 프레임 포인터에 의해 지정된 위치에 저장된 데이터 프레임을 출력할 것인지를 결정한다. 따라서, 의사 결정 엔진(즉, IRC(40))은 소정의 데이터 프레임이 단일 포트에 의해 출력되어야 하는지, 멀티 포트들에 의해 출력되어야 하는지, 모든 포트들에 의해 출력되어야 하는지(즉, 방송되어야 하는지), 아니면 어떤 포트에 의해서도 출력되지 않는지(즉, 폐기)를 결정한다. 예를 들어, 각 데이터 프레임은 소스 및 목적지 어드레스를 갖는 헤더를 포함하는바, 의사 결정 엔진(40)은 목적지 어드레스에 기초하여 적절한 출력 MAC 포트를 식별할 수 있다. 대안적으로, 목적지 어드레스는, 적절한 의사 결정 엔진이 다수의 네트워크 스테이션들에 대응하는 것으로서 식별하는 가상 어드레스에 대응할 수 있다. 또한, 프레임은, 이 프레임을 규정된 스테이션들의 그룹중 하나 또는 그 이상의 멤버들에게 예정된 정보로서 식별하는 VLAN 태그 헤더를 포함할 수 있다. IRC(40)는 또한 수신된 데이터 패킷이 확장 포트(30)를 통해 다른 멀티포트 스위치(12)에 전송되어야 함을 결정할 수 있다. 이에 따라, 내부 룰 체커(40)는 외부 메모리(36)에 일시적으로 저장된 프레임이 단일 MAC 포트로 출력되어야 하는지, 아니면 다수의 MAC 포트들로 출력되어야 하는 지의 여부를 결정할 것이다.
내부 룰 체커(40)는 전송 결정을 전송 기술자의 형태로 스위치 서브시스템(42)에 출력한다. 전송 기술자는 프레임이 높은 우선순위인지 낮은 우선순위인지의 여부를 식별하는 우선순위 부류(priority class)와, 데이터 프레임을 전송해야 하는 각 MAC 포트를 식별하는 포트 벡터와, 수신 포트 번호와, 태그되지 않은 세트와, VLAN 정보와, 전송하는 동안 VLAN 정보를 포함해야 하는 각 MAC 포트를 식별하는 벡터와, 연산코드(opcode)와, 그리고 프레임 포인터를 포함한다. 이러한 전송 기술자의 포맷은 도 9와 관련하여 더 설명한다. 포트 벡터는 데이터 프레임을 수신하여 전송하기 위한 MAC 포트들(예를 들어, 10/100 MAC 포트들(1-12), 기가비트 MAC 포트들 그리고/또는 확장 포트)을 식별한다. 포트 벡터 FIFO(56)는 포트 벡터를 포함하는 전송 기술자를 디코드하고, 데이터 프레임 전송을 수신하기 위해 출력 MAC 포트들에 대응하는 적절한 출력 큐들(58)에 프레임 포인터를 제공한다. 즉, 포트 벡터 FIFO(56)는 프레임 포인터를 포트 마다 제공한다. 출력 큐들(58)이 프레임 포인터를 디큐잉 블록(dequeuing block)(76)(도 3에 도시)에 주면, 이 디큐잉 블록(76)은 외부 메모리 인터페이스(44)를 통해 외부 메모리(36)로부터 포트 벡터로 식별되는 데이터 프레임을 페치하고, 검색된 데이터 프레임을 식별된 포트들의 적절한 전송 FIFO에 제공한다. 만일 데이터 프레임이 관리 에이젼트(management agent)에게 제공되어야 한다면, 프레임 포인터 또한 관리 큐(68)에게 제공되는바, 이는 CPU 인터페이스(50)를 통해 호스트 CPU(32)에 의해 처리될 수 있다. The
멀티카피 큐(60) 및 멀티카피 캐시(62)는 각 포트들로부터 전송된 데이터 프레임의 카피들 수의 트랙을 유지함으로써, 적절한 수의 데이터 프레임의 카피들이 외부 메모리(36)로부터 출력될 때 까지, 데이터 프레임이 외부 메모리(36)에서 오버라이트되지 않도록 보장한다. 일단 포트 벡터 FIFO(56)에 지정된 포트들의 수에 대응하는 카피들의 수가 출력되면, 프레임 포인터가 재요구 큐(66)에 전송된다. 이 재요구 큐(66)는 재요구될 필요가 있는 프레임 포인터들을 저장하고, 링크된 리스트 체인을 진행(walk)하여 버퍼들을 프리 포인터들로서 프리 버퍼 큐(64)에게 돌려준다. 프리 버퍼 큐(64)에게 돌려진 후, 프레임 포인터는 MAC 유닛(20) 또는 기가비트 MAC 유닛(24)에 의해 재이용될 수 있다.
도 3은 본 발명의 예시적인 실시예에 따라 도 2의 스위치 서브시스템(42)을 보다 상세히 도시한다. 도 3에는 도 2의 멀티포트 스위치(12)의 다른 요소들이 재현되어, 이들 요소들에 대한 스위치 서브시스템(42)의 연결을 나타낸다. 3 illustrates the
도 3에 도시된 바와 같이, MAC 모듈(20)은 수신부(20a) 및 전송부(24b)를 포함한다. 이러한 수신부(24a) 및 전송부(24b)는 각각 IEEE 802.3 프로토콜에 따라 대응하는 수신 또는 전송 기능을 수행하도록 구성된 12개의 MAC 모듈들(수신부 및 전송부 각각에 대해 단지 2개 만이 도시되는바, 70a, 70b, 70c 및 70d로 번호가 부여된다)을 포함한다. MAC 모듈들(70c 및 70d)은 각각 모듈들(70a 및 70b)에 상보적으로, 10/100 Mb/s 스위치 포트들에 대한 전송 MAC 연산들을 수행한다. As shown in FIG. 3, the
기가비트 MAC 포트(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에 따라 구성된다.
각 수신 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
외부 메모리 인터페이스(44)는 어떠한 스위치 포트의 위치 포트의 큐잉 논리(74) 또는 디큐잉 논리(76)에 의한 외부 메모리(36)에 대한 메모리 액세스를 제어하는 스케쥴러(80), 및 외부 메모리(36)에 대해 판독 및 기록 동작들을 수행하는 SSRAM 인터페이스(78)를 포함한다. 특히, 멀티포트 스위치(12)는 비-블록킹 스위치로서 동작하도록 구성되는바, 여기서 네트워크 데이터는 10, 100 또는 1000Mb/s의 각각의 전송 속도로 스위치 포트들로부터 수신되고 출력된다. 이에 따라, 스케쥴러(80)는 다른 포트들에 의한 액세스를 제어함으로써 외부 메모리(36)의 대역폭의 이용을 최적화한다. The
각 수신 MAC은 대응하는 스위치 포트로부터 프레임의 일부를 수신하게 되면, 이를 내부 FIFO에 저장하고, FIFO의 크기는 스케쥴러 시간 슬롯들 사이에 도달하는 프레임 데이터를 저장하는 데에 충분하다. 대응하는 큐잉 논리(74)는 프레임 포인터를 얻고 외부 메모리 인터페이스(44)에 기록 요구를 보낸다. 스케쥴러(80)는 기록 요구를, 큐잉 논리(74)로부터의 다른 기록 요구들 또는 디큐잉 논리(76)로부터의 어떠한 판독 요구들과 함께 스케쥴링하고, 요구하는 큐잉 논리(74)(또는 디큐잉 논리(76))에 대해 허가(grant)를 발생시킴으로써, 스케쥴링된 이벤트(즉, 슬롯)로 전송을 개시한다. 이후, 64 비트의 프레임 데이터가, 할당된 슬롯 동안의 직접 메모리 액세스(DMA) 트랜잭션으로, 수신 FIFO로부터 기록 데이터 버스(69a)를 통해 외부 메모리(36)에 전송된다. 프레임 데이터는 프리 버퍼 풀(pool)(64)로부터 얻어진 버퍼 포인터에 의해 지시된 위치에 저장되지만, 하기 설명되는 바와 같이, 다수의 다른 버퍼들을 이용하여 데이터 프레임들을 저장할 수 있다. When each receiving MAC receives a portion of a frame from the corresponding switch port, it stores it in an internal FIFO, and the size of the FIFO is sufficient to store frame data arriving between scheduler time slots. Corresponding queuing
룰 체커(40)는 또한 기록 데이터 버스(69a) 상의 DMA 기록 전송을 모니터(즉, 스누프)함으로써 프레임 포인터 및 헤더 정보(소스 어드레스, 목적지 어드레스, VLAN 태그 정보 등을 포함한다)를 수신한다. 룰 체커(40)는 헤더 정보를 이용하여 전송 결정을 행하고, 포트 벡터를 포함하는 전송 기술자의 형태로 전송 명령을 생성한다. 포트 벡터는 프레임이 전송되어야 하는 각 출력 포트에 대해 설정된 비트를 갖는다. 만일 수신된 프레임이 유니카피 프레임이라면, 룰 체커(40)에 의해 생성된 포트 벡터에는 단지 1개의 비트 만이 설정된다. 포트 벡터에 설정된 단일 비트는 포트들중 특정한 하나에 대응한다. The
룰 체커(40)는 포트 벡터 및 프레임 포인터를 포함하는 전송 기술자를 포트 벡터 FIFO(56)에 출력한다. 포트 벡터 FIFO(56)는 포트 벡터를 조사하여, 어느 특정의 출력 큐가 관련된 프레임 포인터를 수신해야 하는 지를 결정한다. 포트 벡터 FIFO(56)는 프레임 포인터를 적절한 큐(58 그리고/또는 68)의 상부에 놓는다. 이는 프레임의 전송을 큐잉한다. The
도 3에 도시된 바와 같이, 각 전송 MAC 유닛들(70c, 70d, 72d 및 72c)은 각각 관련된 출력 큐들(58a, 58b, 58c 및 58d)을 갖는다. 바람직한 실시예에서, 각 출력 큐들(58)은 높은 우선순위 프레임들에 대해서는 높은 우선순위 큐를 갖고, 낮은 우선순위 프레임들에 대해서는 낮은 우선순위 큐를 갖는다. 높은 우선순위 프레임들은 보증된 액세스 지연 시간을 필요로 하는 프레임들, 예를 들어 멀티미디어 용도를 위한 프레임들 또는 관리 MAC 프레임들에 대해 이용된다. FIFO 타입의 출력 큐들(58)에 저장된 프레임 포인터들은 각 전송 MAC 유닛들에 대한 디큐잉 논리(76)에 의해 처리된다. 어떠한 시점에서, 프레임 포인터는 출력 큐(58), 예를 들어 기가비트 전송 MAC(72c)에 대한 출력 큐(58d)의 바닥에 도달한다. 전송 기가비트 포트(24b)에 대한 디큐잉 논리(76)는 대응하는 기가비트 포트 출력 큐(58d)로부터 프레임 포인터를 취해, 이 프레임 포인터에 의해 지정되는 메모리 위치에서 외부 메모리(36)로부터 프레임 데이터를 판독하도록 스케쥴러(80)에게 요구를 발행(issue)한다. 스케쥴러(80)는 요구를 스케쥴링하고, 전송 기가비트 포트(24b)의 디큐잉 논리(76)에게 DMA 판독을 개시할 수 있는 허가를 발행한다. 이러한 허가에 응답하여, 디큐잉 논리(76)는 프레임 포인터에 의해 지정되는 외부 메모리(36)의 위치로부터 DMA 트랜잭션으로 (판독 버스(69b)를 따라) 프레임 데이터를 판독하고, 전송 기가비트 MAC(72c)에 의한 전송을 위해 내부 전송 FIFO에 프레임 데이터를 저장한다. 전송 기술자가 유니카피 전송을 지정한다면, 프레임 포인터는 전체 프레임 데이터를 전송 FIFO 내에 기록한 다음에 프리 버퍼 큐(64)로 되돌려진다. As shown in Fig. 3, each transmitting
멀티카피 전송은, 포트 벡터가 다수의 설정된 비트들(이는 데이터 프레임의 전송원이 되는 다수의 포트들을 지정한다)을 갖는 것을 제외하고는 유니카피 전송과 유사하다. 프레임 포인터는 적절한 각 출력 큐들(58) 내에 놓여지고, 적절한 전송 MAC 유닛들(20b, 24b 그리고/또는 30b)에 의해 전송된다. Multicopy transmission is similar to unicopy transmission except that the port vector has a number of configured bits (which specify a number of ports that are the source of the data frame). The frame pointer is placed in the appropriate
프리 버퍼 풀(64), 멀티카피 큐(60), 재요구 큐(66) 및 멀티카피 캐시(62)는 프레임 포인터들의 이용, 및 데이터 프레임이 자신의 지정된 출력 포트(들)에 전송된 후의 프레임 포인터들의 재이용을 관리하는 데에 이용된다. 특히, 디큐잉 논리(76)는, 버퍼 내용들이 적절한 전송 FIFO에 카피된 후, 유니카피 프레임들에 대한 프레임 포인터들을 프레임 버퍼 큐(64)에 보낸다. The
멀티카피 프레임들에 대해, 포트 벡터 FIFO(56)는 1개 이상의 출력 큐(58)에게 동일한 프레임 포인터의 다수의 카피들을 제공하는바, 각 프레임 포인터는 제로로 설정된 유니카피 비트를 갖는다. 포트 벡터 FIFO(56)는 또한 프레임 포인터 및 카피 카운트를 멀티카피 큐(60)에 카피한다. 이 멀티카피 큐(60)는 멀티카피 캐시(62)에 카피 카운트를 기록한다. 멀티카피 캐시(62)는 외부 메모리(36)의 각 버퍼(즉, 각 프레임 포인터)에 대해 단일의 카피 카운트를 갖는 랜덤 액세스 메모리이다. For multicopy frames,
일단 디큐잉 논리(76)가 페치된 프레임 포인터에 기초하여 특정한 출력 포트에 대한 프레임 데이터를 검색하고 전송 FIFO에 프레임 데이터를 저장하면, 디큐잉 논리(76)는 유니카피 비트가 1로 설정되었는 지의 여부를 체크한다. 유니카피 비트가 1로 설정되어 있으면, 프레임 포인터는 프리 버퍼 큐(64)로 되돌려진다. 유니카피 비트가 멀티카피 프레임 포인터를 나타내는 제로로 설정되어 있으면, 디큐잉 논리(76)는 -1의 카피 카운트를 갖는 프레임 포인터를 멀티카피 큐(60)에 기록한다. 이 멀티카피 큐(60)는 멀티카피 캐시(62)에 저장된 엔트리에 카피 카운트를 더한다. Once dequeuing
프레임 포인터에 대한 멀티카피 캐시(62) 내의 카피 카운트가 제로에 이르면, 프레임 포인터는 재요구 큐(66)에 전달된다. 단일 데이터 프레임을 다수의 버퍼 메모리 위치들 내에 저장하는 데에 다수의 프레임 포인터들이 이용될 수 있기 때문에, 프레임 포인터들은 프레임 포인터들의 링크된 리스트(즉, 체인)를 형성하도록 서로 참조되어, 저장된 데이터 프레임을 완전하게 식별한다. 재요구 큐(66)는 프레임 포인터들에 의해 식별되는 버퍼 위치들의 체인을 이동(traverse)하여, 프레임 포인터를 프리 버퍼 큐(64)에 전달한다. When the copy count in the
스위치 아키텍쳐에 대한 상기 설명은 패킷 교환 네트워크에서의 스위치 동작의 개요를 제공한다. 이하, 멀티포트 스위치(12)에서 구현되는 본 발명의 특징들에 대해 보다 상세히 설명한다. The above description of the switch architecture provides an overview of switch operation in a packet switched network. Hereinafter, features of the present invention implemented in the
내부 룰 체커Internal rule checkers
본 발명은 네트워크 스위치에서 트렁킹 기능을 제공하는 것에 관한 것으로서, 특히 단일 네트워크 라인을 형성하기 위해 다수의 포트들을 트렁킹하는 것에 관한 것이다. 먼저, IRC(40)에 대해 설명한 다음, 멀티포트 스위치(12)에서의 트렁킹 방법 및 장치에 대해 상세히 설명한다. The present invention relates to providing a trunking function in a network switch, and more particularly to trunking multiple ports to form a single network line. First, the
상기 설명한 바와 같이, 스위치 서브시스템(42)은, 프레임들을 수신한 다음 적절한 출력 포트들에 전송하는 스위칭 논리를 제공한다. 하지만, 전송 결정은 멀티포트 스위치(12) 상에 위치하는 IRC(40)에 의해 행해진다. 도 4에 도시된 본 발명의 일 실시예에 따르면, IRC(40)는 4개의 기능적인 논리 블록들, 즉 유입 룰 엔진(ingress rules engine)(200), 소스 어드레스(SA) 룩업 엔진(210), 목적지 어드레스(DA) 룩업 엔진(220) 및 유출 룰 엔진(egress rules engine)(230)을 포함한다. 예시적인 실시예에서, 이러한 4개의 엔진들(200, 210, 220 및 230)은 개별적인 논리 장치들로서 도시된다. 하지만, 대안적인 구성들에서, 이러한 엔진들은 단일 논리 장치에 결합될 수 있다. As described above, the
도 4에 도시되는 예시적인 실시예에서, IRC(40)는 어드레스 테이블(82)을 포함한다. 대안적인 실시예들에서, 이 어드레스 테이블(82)은 멀티포트 스위치(12)의 다른 부분의 내의 IRC(40)의 외부에, 또는 심지어 멀티포트 스위치(12) 외부에 위치될 수 있다. In the example embodiment shown in FIG. 4,
예시적인 실시예에 따르면, 어드레스 테이블(82)은 4096개의 이용자 어드레스들 및 64개의 고유한 가상 국부 영역 네트워크(VLAN)들에 대한 능력(capability)을 지원한다. 하지만, 지원되는 어드레스들과 VLAN들의 수는 테이블 크기를 확장함으로써 증가할 수 있다. VLAN들은, 방송 트래픽을 VLAN의 "내부"에 유지하는 "방송 도메인"을 제공한다. 예를 들어, 특정한 VLAN은 조직의 하이 레벨에 이용자들의 그룹을 포함할 수 있다. 이러한 이용자들의 그룹에 데이터를 전송할 때, 이 데이터는 이 특정 그룹과 관련된 특정한 VLAN 식별자를 포함함으로써, 이들 이용자들 만이 데이터를 수신하도록 보장할 수 있다. 이러한 VLAN 그룹화는 보다 큰 네트워크 내의 "서브 네트워크들"로서 고려될 수 있다. According to an exemplary embodiment, the address table 82 supports the capability for 4096 user addresses and 64 unique virtual local area networks (VLANs). However, the number of supported addresses and VLANs can be increased by extending the table size. VLANs provide a "broadcast domain" that keeps broadcast traffic "inside" of a VLAN. For example, a particular VLAN may include a group of users at a high level of organization. When sending data to a group of such users, this data may include a specific VLAN identifier associated with this particular group, thereby ensuring that only these users receive the data. This VLAN grouping can be considered as "sub networks" in a larger network.
도 5는 IRC 어드레스 테이블(82)의 구성을 나타낸다. 이 IRC 어드레스 테이블(82)은 4096 엔트리들의 어레이를 포함한다. 첫 번째의 "n"개의 엔트리들(92)은 "빈 엔트리들(bin entries)"이라 불려지고 "0"부터 "n-1"까지의 어드레스들을 갖는다. 나머지 엔트리들(94)은 "힙 엔트리들(heap entries)"이라 불려지고 "n"부터 "4095"까지의 어드레스들을 갖는다. 각 테이블 엔트리들은 72 비트 어드레스 엔트리 필드 및 12 비트 "다음 포인터" 필드를 포함한다. 5 shows the configuration of the IRC address table 82. This IRC address table 82 contains an array of 4096 entries. The first "n "
도 6은 도 5에 도시한 각 84 비트 테이블 엔트리의 구성을 나타낸다. 히트 비트(hit bit)는 어드레스 엔트리 "에이징(aging)"에 이용되어, 미리 정해진 시간 동안 이용되지 않는 엔트리들을 어드레스 테이블(82)로부터 삭제한다. 스태틱 비트(static bit)는 어드레스 엔트리의 삭제를 막는 데에 이용된다. 트래픽 포획 비트(traffic capture bit)는 트래픽 포획 소스 및 목적지 MAC 어드레스들을 식별하여, MAC 대화를 관리 큐(68)에 반영(mirror)한다. FIG. 6 shows the configuration of each 84-bit table entry shown in FIG. Hit bits are used for the address entry “aging” to delete entries from the address table 82 that are not used for a predetermined time. Static bits are used to prevent deletion of address entries. The traffic capture bit identifies the traffic capture source and destination MAC addresses, and mirrors the MAC conversation to the
VLAN 인덱스 필드는 12 비트 VLAN 식별자(ID)를 참조하는 데에 이용되는 6 비트 필드이다. 도 4에 나타낸 VLAN 인덱스-VLAN ID 테이블(86)은 맵핑 조합들을 포함한다. 스위치(12)는 태그된 프레임 및 태그되지 않은 프레임을 모두 수신한다. 이 스위치(12)가 태그되지 않은, 즉 VLAN 태그 정보가 없는 데이터 프레임들을 수신하면, IRC(40)는 프레임이 수신되는 수신 포트에 기초하여, 도 4에 나타낸 VLAN 포트-인덱스 테이블(88)로부터 VLAN 인덱스를 할당한다. VLAN 인덱스-ID 테이블(86) 및 VLAN 포트-인덱스 테이블(88)은 구성 및 상태 레지스터들(52) 내에 위치된다. 하지만, 대안적인 구성들에서, 이 테이블들(86과 88)은 IRC(40) 내에 위치될 수 있다. The VLAN Index field is a 6 bit field used to refer to a 12 bit VLAN identifier (ID). The VLAN index-VLAN ID table 86 shown in FIG. 4 includes mapping combinations. The
포트 벡터는 15 비트 필드로서, 프레임이 전송되어야 하는 포트(들)을 식별하는 벡터를 갖는 전송 기술자를 제공한다. The port vector is a 15 bit field that provides a transmission descriptor with a vector identifying the port (s) to which the frame should be transmitted.
MAC 어드레스 필드는 48 비트 필드로서, 소스 어드레스 및 목적지 어드레스 모두에 대한 어드레스들을 포함한다. 이러한 어드레스들은 유니 캐스트, 멀티 캐스트 또는 방송이 될 수 있다. 개별/집단(I/G) 비트가 또한 MAC 어드레스 필드에 포함된다. The MAC address field is a 48 bit field and contains addresses for both the source address and the destination address. These addresses can be unicast, multicast or broadcast. Individual / Group (I / G) bits are also included in the MAC address field.
본 발명의 예시적인 실시예에서, 호스트 CPU(32)는 관리 엔티티로서 기능하고, CPU IF(50)를 통해 IRC(40)에 연결된다. 대안적으로, 관리 MAC는 CPU IF(50)에 연결되어 관리 엔티티로서 기능할 수 있다. In an exemplary embodiment of the invention, the
호스트 CPU(32)는 어드레스 테이블(82)의 값들의 초기화를 담당한다. 전원을 넣으면, 호스트 CPU(32)는 VLAN 구성들을 포함하는 네트워크 구성에 기초하여 어드레스 테이블(82)에 값들을 적재한다. IRC(40)는 어드레스 테이블(82)의 특정 필드들을 이용하여, 프레임들이 스위치(12)에 수신될 때 프레임 전송을 결정을 행한다. 보다 구체적으로, IRC(40)는 엔진들(200-300)을 이용하여, 프레임 전송 정보를 찾아 어드레스 테이블(82)을 서치하고, 포트 벡터 FIFO(56)에 출력하기 위한 전송 기술자를 생성한다. The
상기 설명한 바와 같이, 엔진들(200-230)은 개별적인 논리 엔진들이기 때문에, 데이터 프레임들을 독립적으로 처리할 수 있으며, 결과적으로 한 번에 한 프레임을 처리하는 시스템들과 비교하여 데이터 처리량을 증가시킨다. 즉, 각 논리 엔진은 각각의 다른 논리 엔진들과 동시에, 서로 다른 데이터 프레임에 대해 자신의 각 처리를 수행할 수 있다. 각 논리 엔진의 동작에 대해서는 하기에서 설명한다. As described above, because the engines 200-230 are separate logic engines, they can process data frames independently, resulting in increased data throughput compared to systems that process one frame at a time. In other words, each logic engine can perform its own processing on different data frames simultaneously with the other logic engines. The operation of each logic engine is described below.
유입 룰 엔진(200)은 들어오는 데이터 프레임들에 대해 다양한 전 처리(pre-processing) 기능들을 수행한다. 예를 들어, 유입 룰 엔진(200)은 프레임이 수신되었을 때 대응하는 MAC가 어떠한 전송 에러들을 검출했는 지의 여부를 조사한다. 또한, 유입 룰 엔진(200)은 수신된 프레임의 소스 어드레스를 조사하여, 개별/집단(I/G) 비트가 설정되었는 지의 여부를 결정한다. I/G 비트가 설정되어 있으면, 유입 룰 엔진(200)은 프레임이 에러들을 가지고 수신되었던 것 처럼 이 프레임을 처리한다. 즉, 수신 에러가 발생하면, 유입 룰 엔진(200)은 프레임을 폐기시키게 하는 널 포트 벡터(null port vector)를 갖는 전송 기술자를 생성한다. 대안적으로, 유입 룰 엔진(200)은 진단 목적으로 호스트 CPU(32)에 에러 프레임을 전송할 수 있다. The
또한, 유입 룰 엔진(200)은 프레임의 MAC DA를 조사하여, 이 프레임이 관리 엔티티, 예를 들어 호스트 CPU(32)에 보내져야 하는 지의 여부를 결정한다. 구체적으로, 유입 룰 엔진(200)은 브리지 프로토콜 데이터 유닛(BPDU)들, 일반 속성 등록 프로토콜(GARP) 프레임, MAC 제어 프레임들 및 물리적 MAC 어드레스를 찾는다. 유입 룰 엔진(200)은 자신들의 특정한 목적지 어드레스 정보에 기초하여 이러한 타입의 프레임들을 식별한다. Also, the
선택적으로, 유입 룰 엔진(200)은 멀티포트 스위치(12)가 수신 포트와 관련되는 VLAN에 속하지 않는 프레임을 전송하는 것을 막기 위해 VLAN 유입 필터링을 수행한다. 유입 룰 엔진(200)은 어떤 VLAN이 각 포트와 관련되는 지를 나타내는 VLAN 멤버 설정 테이블을 액세스하고, 특정 프레임이 수신 포트와 관련된 VLAN에 속하는 지의 여부를 결정한다. 프레임이 유입 필터링에 실패하면, 유입 룰 엔진(200)은 SA 또는 DA 룩업 또는 유입 룰 동작들을 수행하지 않으면서, 널 포트 벡터를 갖는 전송 기술자를 생성한다. Optionally, the
유입 룰 엔진(200)에 의한 처리 후, IRC(40)는 어드레스 테이블(82)의 SA 및 DA 서치를 수행한다. 멀티포트 스위치(12)에 의해 다수의 데이터 프레임들이 동시에 수신되기 때문에, 이 멀티포트 스위치(12)는 프레임 전송 결정을 비교적 빠르게 행해야 한다. 따라서, 본 발명의 예시적인 실시예에서는, 해시 방식(hashing scheme)을 이용하여 어드레스 엔트리들의 서브세트 만을 서치하는바, 이에 대해서는 하기에서 설명한다. 도 5의 메모리 구조는 인덱스된 구성을 제공하는바, 여기에서는 소정의 네트워크 어드레스가 대응하는 빈에 할당될 것이다. 즉, 각 빈 엔트리(96)는 다수의 테이블 엔트리들(즉, 힙 엔트리들)(98)을 참조하도록 구성된다. 이에 따라, SA 룩업 엔진(210)은 먼저 해시 키에 의해 지정되는 특정 빈(96)을 액세스한 다음, 적절한 정합의 위치를 알아내기 위해 대응하는 빈 내에서 (즉, 이에 의해 참조되는) 엔트리들을 서치함으로써 어드레스의 서치를 수행한다. After processing by the
각 빈 엔트리(96)는 SA 룩업 엔진(210)에 의한 어드레스 테이블(82) 내의 특정 어드레스를 찾기 위한 서치의 시작점이다. 빈 엔트리는 어떠한 어드레스도 참조하지 않고(즉, 비어있음), 빈 엔트리 위치 내의 단지 1개의 어드레스 만을 참조하거나, 또는 링크된 리스트 체인 구조를 이용하여 다수의 어드레스들을 참조할 수 있다. Each
도 7은 다른 수의 테이블 엔트리들을 빈 엔트리들을 나타낸다. 빈 엔트리들(96) 및 힙 엔트리들(98) 각각은 72 비트 어드레스 엔트리 및 12 비트 "다음 포인터" 필드를 포함한다. 빈 엔트리(96)과 관련된 "다음 포인터" 필드는 링크된 리스트 어드레스들의 체인의 다음 엔트리의 위치를 식별한다. 예를 들어, 도 7의 빈 3(96d)은 어떠한 관련된 테이블 엔트리도 갖지 않는다. 이 경우, 72 비트 엔트리의 내용들은 중요하지 않고, 빈의 대응하는 "다음 포인터" 필드는 대응하는 빈에 대해 어떠한 엔트리도 없음을 나타내는 "1"의 값을 가질 것이다. 만일 빈 1(96b)과 같은 빈이 단일 테이블 엔트리를 포함하면, 빈 엔트리는 자신의 어드레스 엔트리 필드의 단일 어드레스에 대한 스위칭 논리 데이터를 저장하고, 체인에 더 이상의 추가적인 어드레스 엔트리가 없음을 나타내는 값 "0"을 "다음 포인터"에 저장한다. 하지만, 빈 0(96a)은 체인의 다음 엔트리의 위치를 식별하기 위해 "다음 포인터" 필드를 이용하여 4개의 어드레스들을 참조한다. 빈의 부가적인 엔트리들(96b-96d)은 도 7에 나타낸 바와 같이 선형 리스트로 링크된다. 따라서, 빈 0의 제 1 엔트리는 빈 엔트리(96a)의 어드레스 엔트리 필드에 저장되고, 다음 엔트리(힙 엔트리(98a))는 빈 엔트리(96a)의 다음 포인터 필드의 어드레스 엔트리 "a"에 의해 참조된다. 7 shows empty entries with different numbers of table entries. Each of the
SA 룩업 엔진(210)은 수신된 데이터 프레임의 소스 어드레스 및 VLAN 인덱스와 관련된 엔트리들을 찾기 위해 위해 IRC 어드레스 테이블(82)의 해시 서치를 수행한다. 도 8은 본 발명의 일 실시예에 따라 SA 룩업 엔진(210)과 함께 이용되는 해시 함수 회로(100)를 나타낸 블록도이다. 이 해시 함수 회로(100)는 일련의 AND 게이트들(102), 일련의 배타적 OR (XOR) 게이트들(104), 및 시프트 레지스터(106)를 포함한다. 사용자 프로그램가능 레지스터(HASHPOLY)(108)에 저장되는 사용자 지정 해시 함수는 해시 함수 회로(100)에 의해 이용되는 해시 다항식을 정의하는 12 비트 값을 포함한다. 본 발명의 해싱 함수에 대한 예시적인 해시 다항식들은 0100 1000 1101의 HASHPOLY를 갖는 x12+x10+x7+x3+x2+1, 0100 0010 1001의 HASHPOLY를 갖는 x12+x10+x5+x3+1 및 0101 1001 0101의 HASHPOLY를 갖는 x12+x10+x8+x7+x4+x2+1이다. x12 항은 항상 1인 것으로 가정하기 때문에, HASHPOLY 레지스터(108)에 저장되지 않는다. 다른 다항식들 또한 특정한 설계 요건에 따라서 HASHPOLY에 이용될 수 있다.
해시 함수 회로(100)는 사용자 지정 해시 함수에 따라 데이터 패킷의 소스 어드레스를 이용하여 해시 키를 생성한다. 처음에, IRC 제어기(82)는 VLAN 인덱스와 데이터 패킷의 소스 어드레스의 16 최하위 비트들을 연결하여 서치키를 생성한다. 전체 서치 키가 처리된 후, 해시 함수 회로(100)는 12 비트 해시 키를 출력한다. The
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 룩업 엔진(210)은, 그 어드레스 및 VLAN 인덱스가 수신된 프레임의 소스 어드레스(SA) 및 VLAN 인덱스와 일치하는 어드레스 엔트리를 찾아 특정 빈의 빈 리스트를 서치한다. After the bin number is calculated, the
SA 룩업 엔진(210)이, 어드레스 및 VLAN 인덱스가 프레임의 SA 및 VLAN 인덱스와 일치하는 어드레스 엔트리를 찾는 다면, SA 룩업 엔진(210)은 그 어드레스 엔트리에 대해 히트 비트를 설정한다. SA 룩업 엔진(210)이 일치를 찾아내지 못하고, "학습(learning)", 즉 어드레스 테이블(82)에 새로운 엔트리들을 부가하는 것이 가능해지면, SA 룩업 엔진(210)은 수신된 프레임으로부터의 정보를 이용하여 IRC 어드레스 테이블(82)에 새로운 엔트리를 구축한다. If the
SA 룩업 엔진(210)이 서치를 완료하고 새로운 엔트리를 부가한 후, 필요에 따라, DA 룩업 엔진(220)은 어드레스 및 VLAN 인덱스가 프레임의 목적지 어드레스(DA) 및 VLAN 인덱스와 일치하는 어드레스 엔트리를 찾아 어드레스 테이블(82)을 서치한다. DA 룩업 엔진(220)은 도 8에 나타낸 12 비트 해시 함수 회로(100)를 이용하여 12 비트 해시 키를 생성한다. 이 DA 룩업 엔진(220)은 SA 룩업 엔진(210)에 대해 설명된 것과 유사한 방식으로 해시 키를 생성하는바, 차이점은 해시 함수 회로(100)가 목적지 어드레스 정보를 이용하여 서치 키 및 해시 키를 생성한다는 것이다. 이후, DA 룩업 엔진(220)은 해시 키의 하위 POLYEN 비트들을 이용하여 어드레스 테이블(82)의 빈 번호를 계산한다. 이후, DA 룩업 엔진(220)은 어드레스 테이블(82) 내의 DA/VLAN 인덱스 일치를 찾아 적절한 빈 리스트를 서치한다. 일치가 발견되면, DA 룩업 엔진(220)은 어드레스 엔트리의 포트 벡터 필드를 이용하여 포트 벡터 필드 정보를 유출 룰 엔진(230)에 전달한다. DA 룩업 엔진(220)이 DA/VLAN 인덱스 일치를 찾지 못하는 경우, 프레임은 VLAN의 모든 멤버들에게 "플러딩(flooding)"되어야 한다. 이 경우, DA 룩업 엔진(220)은 모든 포트들이 프레임을 전송할 것임을 나타내도록 포트 벡터를 설정한다. After the
DA 룩업 엔진(220)이 포트 벡터를 생성한 후, 유출 룰 엔진(230)은 수신 포트 번호 및 VLAN ID 정보와 함께 포트 벡터 정보를 수신한다. 이후, 유출 룰 엔진(230)은 프레임에 대한 전송 기술자를 생성한다. After the
도 9는 본 발명의 일 실시예에 따른 전송 기술자의 구성을 나타낸다. 도 9를 참조하여, 우선순위 클래스 필드는 1 비트 필드로서, 프레임 포인터에, 예를 들어 높은 우선순위 또는 낮은 우선순위와 같은 우선순위가 부과되어야 하는 출력 우선순위 큐를 나타낸다. 9 shows a configuration of a transmission descriptor according to an embodiment of the present invention. Referring to FIG. 9, the priority class field is a 1-bit field, which indicates an output priority queue to which a frame pointer should be given priority, such as, for example, high priority or low priority.
포트 벡터 필드는 15 비트 필드로서, 데이터 프레임을 수신하여 자신의 목적지 어드레스에 전송해야 하는 각 포트(들)을 식별한다. 이 포트 벡터 필드의 비트 0은 포트 0(관리 포트)에 대응하고, 비트들 1-12는 각각 MAC 포트들(1-12)(10/100 Mb/s 포트들)에 대응하며, 비트 13은 기가비트 포트(24)에 대응하고, 그리고 비트 14는 확장 포트(30)에 대응한다. The port vector field is a 15-bit field that identifies each port (s) that should receive a data frame and send it to its destination address.
태그되지 않은 세트 필드는 13 비트 필드로서, 어떤 포트가 프레임들을 전송하기 전에 VLAN 태그 헤더들을 제거해야하는 지를 나타낸다. 이 태그되지 않은 세트는 태그되지 않은 세트 테이블로부터 얻어진다. Rx 포트는 4 비트 필드로서, 프레임이 수신되었던 포트를 나타낸다. The untagged set field is a 13-bit field that indicates which port should remove the VLAN tag headers before sending frames. This untagged set is obtained from the untagged set table. The Rx port is a 4-bit field and indicates the port on which the frame was received.
VLAN ID 필드는 프레임과 관련된 VLAN 식별자를 포함하는 12 비트 필드이다. 연산코드는 11 비트 필드로서, 전송 이전에 프레임이 어떻게 변경되어야 하는 지에 대한 명령 및 호스트 CPU(32)가 관리 큐로부터의 프레임을 처리하기 위해 이용할 수 있는 정보를 포함한다. 프레임 포인터는 외부 메모리(36)에 저장된 프레임의 위치를 포함하는 13 비트 필드이다. The VLAN ID field is a 12 bit field containing the VLAN identifier associated with the frame. The opcode is an 11-bit field that contains instructions on how the frame should be changed before transmission and information that the
일단 필요한 전송 정보를 얻으면, 도 3에 나타낸 바와 같이, 유출 룰 엔진(230)은 큐잉을 위해 전송 기술자를 포트 벡터 FIFO(56)에 출력한다. Once the necessary transmission information is obtained, as shown in FIG. 3, the
트렁킹 기능Trunking function
상기 설명한 바와 같이, 멀티포트 스위치(12)는 10/100 Mb/s 동작이 가능한 12개의 포트들을 포함한다. 트렁킹은 2개의 동일한 장치들 간의 2개 이상의 점 대 점 접속을 단일 네트워크 링크로서 처리하는 기술이다. 이러한 트렁킹에 의해, 다수의 포트들을 링크시켜 2개의 말단 장치들 간에 트렁크 전송 경로를 형성함으로써, 멀티포트 스위치(12)는 2개의 장치들, 예를 들어 2개의 네트워크 스테이션들, 2개의 스위치들, 또는 서버와 스위치 간에 보다 큰(high) 대역폭 경로를 얻을 수 있게 된다. As described above, the
예를 들어, 멀티포트 스위치(12) 상의 4개의 포트들이 100 Mb/s의 데이터 전송 속도로 설계되고, 트렁킹 방식이 이러한 4개의 포트들을 링크시켜 단일 트렁크를 형성한다고 가정하자. 결과적으로 형성되는 트렁크에 의해 이들 4개의 포트들을 통해 데이터를 송수신할 수 있게 됨으로써, 2개의 말단 장치들 간에 1개의 400Mb/s 링크가 형성된다. For example, suppose four ports on the
본 발명의 일 실시예에 따르면, 멀티포트 스위치(12)는 최대 3개의 독립적인 트렁크들을 지원하는바, 이들 각 트렁크는 2개 내지 4개의 포트들을 지원할 수 있다. 예시적인 실시예에서, 멀티포트 스위치(12) 상의 12개의 10/100 Mb/s 포트들은 도 10에 나타낸 바와 같이 3개의 트렁크 블록들로 분할된다. 도 10을 참조하여, 제 1 트렁크 블록(트렁크 1)은 포트들 1 내지 4를 포함하고, 제 2 트렁크 블록(트렁크 2)은 포트들 5 내지 8을 포함하며, 그리고 제 3 트렁크 블록(트렁크 3)은 포트들 9 내지 12를 포함한다. 트렁크 블록 내에서, 어떠한 2개 내지 4개의 인접 포트들은 단일 트렁크로 결합될 수 있다. According to one embodiment of the invention, the
도 10은 본 발명의 예시적인 실시예에 따른 12개의 10/100 Mb/s에 대한 트렁크 멤버십 결합들을 나타낸다. 도 10에서, "T"는 포트가 트렁크에 포함됨을 나타내고, "-"는 포트가 트렁크에 포함되지 않기 때문에 독립적인 포트로서 이용될 수 있음을 나타낸다. 예시적인 실시예에서 상기 설명한 바와 같이, 어떠한 2개 내지 4개의 인접 포트들은 결합하여 단일 트렁크를 형성할 수 있다. 예를 들어, 도 10을 참조하면, 포트들 1 및 2이 결합하여 엔트리(A)에 나타낸 2-링크 트렁크를 형성할 수 있다. 하지만, 포트들 1 및 3은 서로 인접하지 않기 때문에, 2-링크 트렁크를 형성하도록 결합될 수 없다. 10 illustrates trunk membership bonds for twelve 10/100 Mb / s according to an exemplary embodiment of the present invention. In FIG. 10, "T" indicates that the port is included in the trunk, and "-" indicates that the port can be used as an independent port because it is not included in the trunk. As described above in an exemplary embodiment, any two to four adjacent ports may combine to form a single trunk. For example, referring to FIG. 10,
대안적인 실시예들에서, 멀티포트 스위치(12)는 단일 트렁크 블럭 내에 보다 적은 포트들을 포함하거나, 또는 이 멀티포트 스위치(12)의 포트들의 최대수까지의 보다 많은 포트들을 포함할 수 있다. 또한, 대안적인 실시예에서, 멀티포트 스위치(12)는 어떤 포트들이 함께 링크될 수 있는 지에 대한 제한없이 구성될 수 있다. 예를 들어, 포트들 1, 3, 5, 7 및 9는 5-링크 트렁크로 결합될 수 있다. In alternative embodiments, the
호스트 CPU(32)는, 예를 들어 말단 장치들이 100 Mb/s 이상의 대역폭을 갖는 데이터 링크를 요구하는 등의 특정 네트워크 요건들에 기초하여, 특정 트렁크 구성을 설정한다. 초기에, 호스트 CPU(32)는 도 4에서 나타난 바와 같이 각 포트 IRC 제어 레지스터(114a 내지 114l)에 트렁크 제어 비트들을 설정함으로써 특정 트렁크들에 포트들을 할당한다. 본 발명의 예시적인 실시예에 따르면, 멀티포트 스위치(12)는 12개의 10/100 Mb/s 포트들 각각에 대해 1개의 포트 IRC 제어 레지스터(114)를 포함한다. 대안적인 구성들에서는, 단일 레지스터를 이용하여 12개의 10/100 Mb/s 포트들에 대해 적절한 제어 정보를 저장할 수 있다. The
도 4를 참조하면, 각 포트 IRC 제어 레지스터(114)는 2개의 트렁크 제어 비트들: 즉 트렁크 비트(trunk bit) 및 트렁크_액티브 비트(trunk_act bit)를 포함한다. 트렁크 비트가 설정되면, 대응하는 포트가 트렁크의 멤버임을 나타낸다. 트렁크_액티브 비트가 설정되면, 대응하는 포트가 트렁크의 액티브 멤버임을 나타낸다. Referring to Figure 4, each port IRC control register 114 includes two trunk control bits: a trunk bit and a trunk_act bit. If the trunk bit is set, it indicates that the corresponding port is a member of the trunk. If the trunk_active bit is set, it indicates that the corresponding port is an active member of the trunk.
하기의 표 1은 트렁크 제어 비트들의 다양한 조합들, 및 이러한 조합들에 기초하여 어떻게 프레임들이 전송되어야 하는 지를 요약한다. Table 1 below summarizes the various combinations of trunk control bits and how frames should be transmitted based on these combinations.
표 1을 참조하여, 트렁크 비트가 "0"이면, 트렁크_액티브 비트와 상관없이, 대응하는 포트는 트렁크의 멤버가 아니고 이 포트에 대해 예정된 프레임들은 다른 포트로 다시 향하지 않을 것이다. 트렁크 비트가 "1"이고, 트렁크_액티브 비트가 "0"이면, 대응하는 포트는 트렁크의 일부이지만, 아마도 링크 실패로 인해 액티브하지 않다. 이 포트에 대해 예정된 프레임들은 트렁크의 다른 포트로 다시 향할 것이다. 트렁크 비트가 "1"이고, 트렁크_액티브 비트가 "1"이면, 대응하는 포트는 트렁크의 액티브 부분이고, 프레임들은 이 포트로부터 전송될 수 있는바, 이에 대해서는 하기에서 보다 상세히 설명한다. Referring to Table 1, if the trunk bit is "0", regardless of the trunk_active bit, the corresponding port is not a member of the trunk and frames destined for this port will not be redirected to another port. If the trunk bit is "1" and the trunk_active bit is "0", the corresponding port is part of the trunk, but is probably not active due to link failure. Frames destined for this port will be redirected to another port in the trunk. If the trunk bit is "1" and the trunk_active bit is "1", the corresponding port is the active part of the trunk, and frames can be transmitted from this port, as described in more detail below.
유익하게는, 트렁킹 정보를 저장하기 위해 포트 IRC 제어 레지스터(114a 내지 114l)를 이용함으로써, 본 발명은 IRC 어드레스 테이블(82)에 특정 트렁킹 정보를 저장하지 않으면서 트렁킹을 지원할 수 있다. 또한, 포트당 2개의 비트, 즉 트렁크 비트 및 트렁크_액티브 비트를 이용하여 트렁크 멤버십을 나타냄으로써, 링크가 파괴/복원될 때 또는 호스트 CPU(32)가 네트워크 트렁킹 구성을 변경할 때, 호스트 CPU(32)는 IRC 어드레스 테이블(82)을 변경하지 않으면서 트렁크를 재구성할 수 있다. 예를 들어, 호스트 CPU(32)가 트렁크 1의 액티브 포트로서 포트 2를 제거한다고 가정하자. 이 호스트 CPU(32)는포트 IRC 제어 레지스터(114b)의 트렁크_액티브 비트를 클리어함으로써 이를 달성한다. Advantageously, by using the port IRC control registers 114a-114l to store trunking information, the present invention can support trunking without storing specific trunking information in the IRC address table 82. In addition, by representing trunk membership using two bits per port, namely trunk bit and trunk_active bit, when the link is destroyed / restored or when the
상기 설명한 바와 같이, 프레임이 수신되면, IRC(40)는 이 프레임을 4개의 단계, 즉 유입 룰 엔진(200), SA 룩업 엔진(210), DA 룩업 엔진(220) 및 유출 룰 엔진(230) 각각을 통해 처리한다. DA 룩업 엔진(220)이 DA 룩업을 완료한 후, 유출 룰 엔진(230)은 포트 벡터 정보를 수신하여 검사하고, 포트 IRC 제어 레지스터(114)로부터 프레임이 트렁크의 일부인 포트를 통해 전송되어야 하는 지의 여부를 결정한다. 프레임이 트렁크 포트를 통해 전송될 때, 유출 룰 엔진(230)은 프레임이 전송될 트렁크의 특정 전송 포트를 결정한다. As described above, when a frame is received, the
도 11은 트렁킹과 관련된 프레임 전송 정보를 생성하는 방법을 나타낸 흐름도이다. 도 11의 단계(200)에서, 유출 룰 엔진(230)은 DA 록업 엔진(220)으로부터 포트 벡터 정보 및 수신 포트 정보를 수신한다. 다음으로, 단계(202)에서, 유출 룰 엔진(230)은 대응하는 IRC 포트 제어 레지스터(들)(114)에 저장된 정보와 포트 벡터 정보를 비교한다. 이후, 유출 룰 엔진(230)은 전송 포트가 트렁크의 일부인지의 여부를 결정한다. 즉, 유출 룰 엔진(230)은 포트 벡터에 의해 식별되는 포트(들)에 대응하는 각 포트 IRC 제어 레지스터(114)의 트렁크 비트를 검사한다. 11 is a flowchart illustrating a method of generating frame transmission information related to trunking. In
모든 전송 포트들이 트렁크의 일부가 아닐 때, 즉 트렁크 비트들이 "0"이면, 단계(204)에서 유출 룰 엔진(230)은 포트 벡터 FIFO(56)에 전송 기술자를 출력한다. 하지만, 전송 포트가 트렁크의 일부일 때, 즉 트렁크 비트가 "1"이면, 단계(206)에서 유출 룰 엔진(230)은 트렁크 포트들에 대응하는 포트 벡터 내의 모든 비트들을 마스크한다. When all of the transport ports are not part of the trunk, i.e. if the trunk bits are "0", then at
다음으로, 단계(208)에서, 유출 룰 엔진(230)은 트렁크 맵핑 동작을 수행하여 프레임이 전송될 포트를 결정한다. 도 12에 나타낸 예시적인 실시예에 따르면, 트렁크 맵핑 논리는 배타적 OR (XOR) 게이트(120)를 포함한다. 도 12를 참조하여, 트렁크 맵핑 논리는 프레임의 SA 및 DA의 2개의 최하위 비트들을 수신한 다음, 이들 비트들을 XOR 조합하여 2 비트 출력을 생성한다. 즉, 트렁크 맵핑 논리는 프레임의 SA 및 DA의 최하위 비트들을 XOR한 다음, 프레임의 SA 및 DA의 두번째 최하위 비트를 XOR한다. 이후, 유출 룰 엔진(230)은 2 비트 출력에 기초하여, 데이터를 전송할 트렁크의 포트들중 하나를 선택한다. Next, in
도 12에 나타낸 예시적인 실시예에 따르면, XOR 게이트(120)로부터의 출력 비트 패턴 "00"은 트렁크 블록의 제 1 포트에 대응한다. 출력 비트 패턴들 "01", "10" 및 "11"은 각각 트렁크 블록의 제 2 포트 내지 제 4 포트에 대응한다. According to the exemplary embodiment shown in FIG. 12, the output bit pattern “00” from the
예를 들어, 포트 벡터가 프레임이 포트 2에 전송되어야 함을 나타내는 정보를 포함하고(즉, 15 비트 포트 벡터의 비트 2가 설정된다), 포트 IRC 제어 레지스터 2 (114b)가 포트 2가 트렁크 1의 액티브 멤버임을 나타낸다고(즉, 트렁 비트 및 트렁크_액티브 비트가 모두 "1"이다) 가정하자. 또한, 수신된 프레임의 소스 어드레스의 2개의 최하위 비트(LSB)들이 "01"이고, 수신된 프레임의 목적지 어드레스의 2개의 최하위 비트들이 "10"이라고 가정하자. 도 12를 참조하여, 유출 룰 엔진(230)은 "1" 및 "0", 즉 SA 및 DA 각각의 LSB들을 XOR 게이트(120)를 통해 XOR하여, "1"을 출력한다. 이후, 유출 룰 엔진(230)은 "0" 및 "1", 즉 SA 및 DA 각각의 제 2 LSB들을 XOR 게이트(120)를 통해 XOR하여, "1"을 출력한다. 따라서, 본 예의 XOR 게이트(120)의 출력은 "11"이다. 이러한 방식으로, 유출 룰 엔진(230)은 도 10에 나타낸 트렁크 1의 네번째 포트, 즉 포트 4를 선택한다. For example, the port vector contains information indicating that the frame should be sent to port 2 (ie,
대안적인 구성들에서는, 다른 트렁크 맵핑 기능을 이용하여, 데이터 프레임을 전송할 전송 포트를 결정한다. 유익하게는, 본 발명에서 이용되는 특정한 트렁크 맵핑 기능은 데이터 프레임들의 전송을 트렁크 내의 포트들 간에 비교적 동일하게 배분함으로써 2개의 말단 장치들 간의 효율적인 데이터 전송 속도를 최적화한다. 또한, 단일 트렁크에 4개 이상의 포트들이 포함되는 구성들에서, 이용되는 트렁크 맵핑 기능은 트렁크 포트를 선택하는 데에 2 비트 이상의 출력을 요구할 것이다. 예를 들어, 트렁크에 8개의 포트들이 포함된다면, 이러한 8개의 포트들로부터 출력 포트를 선택하는 데에는 3 비트 출력이 요구된다. In alternative configurations, another trunk mapping function is used to determine the transport port to which to transmit the data frame. Advantageously, the particular trunk mapping function used in the present invention optimizes the efficient data transfer rate between two end devices by distributing the transmission of data frames relatively equally among the ports in the trunk. Also, in configurations where more than four ports are included in a single trunk, the trunk mapping function used will require more than two bits of output to select the trunk port. For example, if a trunk contains eight ports, a three bit output is required to select an output port from these eight ports.
다음으로, 단계(210)에서, 유출 룰 엔진(230)은 단계(208)에서 선택된 포트가 트렁크의 액티브 포트인 지의 여부를 결정한다. 즉, 유출 룰 엔진(230)은 단계(208)에서 선택된 포트에 대한 포트 IRC 제어 레지스터(114)의 트렁크 비트가 "1"(이는 포트가 트렁크의 일부임을 나타낸다)이고, 트렁크_액티브 비트가 "1"(이는 포트가 트렁크의 액티브 링크임을 나타낸다)인지의 여부를 결정한다. Next, in
단계(210)에서의 결정이 "아니오"이면, 유출 룰 엔진(230)은 단계(212)에서 동일 트렁크에서 대안적인 포트를 선택한다. 예시적인 실시예에 따르면, 유출 룰 엔진(230)은 도 12에서 화살표로 나타낸 바와 같이 트렁크 블록 내의 다음의 고위 포트를 선택한다. 예를 들어, 단계(208)에서 트렁크 내의 제 3 포트가 선택되고, 단계(210)에서 유출 룰 엔진(230)이 상기 선택된 포트가 트렁크의 액티브 멤버가 아니라고 결정하면, 유출 룰 엔진(230)은 트렁크 내의 제 4 포트를 선택한다. 이후, 유출 룰 엔진은 단계(210)로 돌아가, 선택된 포트가 트렁크의 액티브 멤버일 때 까지 프로세스를 반복한다. 예를 들어, 트렁트 블록의 제 4 포트가 단계(212)에서 선택되고, 이 제 4 포트가 트렁크의 액티브 멤버가 아니라면, 유출 룰 엔진(230)은 트렁크 블록의 제 1 포트를 선택한다. 본 발명의 대안적인 실시예들에서, 대안적인 포트를 선택하는 다른 방법들을 이용할 수 있다. 예를 들어, 선택된 포트가 트렁크의 액티브 링크가 아니면, 트렁크 블록의 다음의 하위 포트를 선택한다. If the determination at
트렁크 내의 액티브 포트가 선택된 후, 단계(214)에서 유출 룰 엔진(230)은 데이터 프레임이 이 프레임이 전송되어야 하는 동일 트렁크의 일부인 트렁크 포트에 수신되었는 지의 여부를 체크한다. 즉, 유출 룰 엔진(230)은 프레임이 수신되었던 수신 포트에 대응하는 포트 IRC 제어 레지스터(114)의 내용을 체크하여, 트렁크 비트가 설정되었는 지의 여부를 결정한다. 단계(214)에서의 결정이 "아니오"이면, 유출 룰 엔진(230)은 단계(218)에서 포트 벡터 FIFO(56)에 전송 기술자를 출력한다. 단계(214)에서의 결정이 "예"이면, 유출 룰 엔진(230)은 단계(216)에서 수신 포트와 동일한 트렁크에 포함된 포트(들)에 대응하는 포트 벡터의 모든 비트들을 마스크한다. 이러한 방식으로, 유출 룰 엔진(230)은 트렁크 포트에 수신된 데이터 프레임들이 동일한 트렁크에 전송되지 않도록 보장한다. 유익하게는, 이는 데이터 프레임을 그 소스로 다시 전송하는 것과 관련된 처리 시간을 감소시킨다. After the active port in the trunk has been selected, in
다음으로, 유출 룰 엔진(230)은 포트 벡터를 포함하는 전송 기술자를 포트 벡터 FIFO(56)에 출력한다. 도 11에 나타난 흐름도는 멀티포트 스위치(12)에 의해 수신되는 데이터 프레임들에 적용할 수 있다. 하지만, 호스트 CPU(32)가 전송을 개시하면, IRC(40)는 이 호스트 CPU(32)에 의해 생성된 포트 벡터 정보를 변경하지 않음으로써, 도 11에서 나타낸 트렁킹 알고리즘을 바이패스한다. Next, the
지금까지 네트워크 인터페이스 장치에서의 트렁킹 시스템 및 방법에 대해 설명했다. 본 발명의 장점은, 멀티포트 스위치(12)가 어드레스 테이블(82)에 특정한 트렁킹 정보를 저장하지 않으면서 트렁킹을 지원함으로써, 어드레스 테이블(82)의 크기를 감소시키고, 이 어드레스 테이블(82)을 서치하는 데에 걸리는 시간을 감소시킨다는 것이다. 본 발명의 다른 장점은 어드레스 테이블(82)을 재구성하지 않으면서 트렁킹 변경들이 신속하고 효율적인 방식으로 행해짐으로써, 네트워크 고장 시간의 가능성을 감소시킨다는 것이다. So far, we have described the trunking system and method in the network interface device. An advantage of the present invention is that the
본 개시에서는, 본 발명의 바람직한 실시예들을 제시하여 설명했지만, 상기 설명한 바와 같이, 본 발명은 다양한 다른 결합들 및 환경들에서 이용될 수 있고, 본원에서 설명되는 본 발명의 범위 내에서 변경 또는 수정될 수 있다. In the present disclosure, although preferred embodiments of the present invention have been described and described, as described above, the present invention can be used in various other combinations and environments, and can be changed or modified within the scope of the present invention described herein. Can be.
Claims (18)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US31715199A | 1999-05-24 | 1999-05-24 | |
US09/317,151 | 1999-05-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20010101360A KR20010101360A (en) | 2001-11-14 |
KR100577448B1 true KR100577448B1 (en) | 2006-05-10 |
Family
ID=23232337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020017008440A KR100577448B1 (en) | 1999-05-24 | 1999-12-07 | Method and apparatus for trunking multiple ports in a network switch |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP1180285A1 (en) |
JP (1) | JP2003500926A (en) |
KR (1) | KR100577448B1 (en) |
WO (1) | WO2000072523A1 (en) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6973082B2 (en) | 2002-02-01 | 2005-12-06 | Fujitsu Limited | Forwarding packets to aggregated links using distributed ingress card processing |
US7167941B2 (en) * | 2003-09-10 | 2007-01-23 | Intel Corporation | Multi-port device configuration |
JP4368251B2 (en) | 2004-06-09 | 2009-11-18 | 富士通株式会社 | Frame transfer processing method and apparatus |
CN100352227C (en) * | 2004-07-07 | 2007-11-28 | 华为技术有限公司 | Multi-inserting frame interconnecting system |
US7697525B2 (en) | 2006-12-21 | 2010-04-13 | Corrigent Systems Ltd. | Forwarding multicast traffic over link aggregation ports |
KR101044917B1 (en) * | 2010-10-12 | 2011-06-28 | 주식회사 에이씨앤티시스템 | Network switch system for checking link connection state and switch included in the same |
JP2016058835A (en) * | 2014-09-08 | 2016-04-21 | 日立金属株式会社 | Relay system and switch device |
Family Cites Families (3)
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 |
-
1999
- 1999-12-07 EP EP99967237A patent/EP1180285A1/en not_active Withdrawn
- 1999-12-07 KR KR1020017008440A patent/KR100577448B1/en not_active IP Right Cessation
- 1999-12-07 WO PCT/US1999/029118 patent/WO2000072523A1/en active IP Right Grant
- 1999-12-07 JP JP2000619869A patent/JP2003500926A/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
EP1180285A1 (en) | 2002-02-20 |
KR20010101360A (en) | 2001-11-14 |
WO2000072523A1 (en) | 2000-11-30 |
JP2003500926A (en) | 2003-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6535489B1 (en) | Method and apparatus in a network switch for handling link failure and link recovery in a trunked data path | |
US6460088B1 (en) | Method and apparatus for port vector determination at egress | |
US6445709B1 (en) | Method and apparatus for finding a match entry using receive port number embedded in the port vector | |
US6775290B1 (en) | Multiport network switch supporting multiple VLANs per port | |
US6813266B1 (en) | Pipelined access to address table in a network switch | |
US6842457B1 (en) | Flexible DMA descriptor support | |
US6122669A (en) | Method and apparatus for auto-incrementing through table and updating single register in memory | |
US6515993B1 (en) | Method and apparatus for manipulating VLAN tags | |
US6732184B1 (en) | Address table overflow management in a network switch | |
US6680945B1 (en) | Method and apparatus for support of tagging and untagging per VLAN per port | |
US7764674B2 (en) | Address resolution snoop support for CPU | |
US6990102B1 (en) | Parallel lookup tables for locating information in a packet switched network | |
US6577636B1 (en) | Decision making engine receiving and storing a portion of a data frame in order to perform a frame forwarding decision | |
US6636523B1 (en) | Flow control using rules queue monitoring in a network switching system | |
US6625146B1 (en) | Method and apparatus for operating a network switch in a CPU-less environment | |
US6731596B1 (en) | Network switch having system for automatically detecting change in network node connection | |
US7099325B1 (en) | Alternately accessed parallel lookup tables for locating information in a packet switched network | |
US6658015B1 (en) | Multiport switch with plurality of logic engines for simultaneously processing different respective data frames | |
US6907036B1 (en) | Network switch enhancements directed to processing of internal operations in the network switch | |
US6904043B1 (en) | Apparatus and methods for storing and processing header information in a network switch | |
US6778547B1 (en) | Method and apparatus for improving throughput of a rules checker logic | |
US6529503B1 (en) | Apparatus and method for storing header information in a network switch | |
US6507564B1 (en) | Method and apparatus for testing aging function in a network switch | |
KR100577448B1 (en) | Method and apparatus for trunking multiple ports in a network switch | |
US6584106B1 (en) | Backbone forwarding scheme for multiport network switch |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |