KR100454681B1 - 프레임 다중화를 이용한 이더넷 스위칭 장치 및 방법 - Google Patents

프레임 다중화를 이용한 이더넷 스위칭 장치 및 방법 Download PDF

Info

Publication number
KR100454681B1
KR100454681B1 KR10-2002-0068906A KR20020068906A KR100454681B1 KR 100454681 B1 KR100454681 B1 KR 100454681B1 KR 20020068906 A KR20020068906 A KR 20020068906A KR 100454681 B1 KR100454681 B1 KR 100454681B1
Authority
KR
South Korea
Prior art keywords
frame
pause
buffer
unit
information
Prior art date
Application number
KR10-2002-0068906A
Other languages
English (en)
Other versions
KR20040040707A (ko
Inventor
강성수
정해원
이형호
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR10-2002-0068906A priority Critical patent/KR100454681B1/ko
Priority to US10/440,789 priority patent/US7260120B2/en
Publication of KR20040040707A publication Critical patent/KR20040040707A/ko
Application granted granted Critical
Publication of KR100454681B1 publication Critical patent/KR100454681B1/ko

Links

Classifications

    • 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
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5603Access techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • 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/30Peripheral units, e.g. input or output ports
    • H04L49/3018Input queuing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Small-Scale Networks (AREA)

Abstract

본 발명은 이더넷 스위칭에 관한 것으로서 특히, 다수의 1기가비트 이더넷 프레임(1 gigabit Ethernet frame)을 하나 이상의 10기가비트 이더넷 프레임(10 gigabit Ethernet frame)으로 다중화(multiplexing) 및 역 다중화(demultiplexing)하여 스위치 패브릭 칩셋의 내부 경로에 대한 정보가 없어도 프레임 전달 순서를 바르게 할 수 있는 프레임 다중화를 이용한 이더넷 스위칭 장치 및 방법에 관한 것이다. 이를 위하여 본 발명은, 10기가비트 미디어 독립 인터페이스(XGMII)의 형식에 따라 입력되는 10기가비트 이더넷 프레임을 복수의 기가비트 미디어 독립 인터페이스(GMII) 형식의 기가비트 이더넷 프레임으로 변환시켜 출력하는 복수의 프레임 역다중화기; 기가비트 미디어 독립 인터페이스(GMII)의 형식에 따라 입력되는 복수의 기가비트 이더넷 프레임을 10기가비트 미디어 독립 인터페이스(XGMII)의 형식의 10기가비트 이더넷 프레임으로 변환시켜 출력하는 복수의 프레임 다중화기; 및 입력 및 출력 인터페이스가 상기 기가비트 미디어 독립 인터페이스(GMII)를 지니고, 상기 복수의 프레임 역다중화기 및 상기 복수의 프레임 다중화기와 GMII의 형식으로 접속되며, 상기 프레임 다중화기로 보내는 프레임인 경우에는 그 프레임 다중화기에 접속된 다수의 GMII 포트들 중에서 임의의 사용 가능한 포트로 출력하고, 상기 프레임 다중화기 및 상기 프레임 역다중화기와 접속된 상기 GMII는 전이중(Full Duplex)방식으로 설정된 스위치 패브릭 칩 셋을 포함한다.

Description

프레임 다중화를 이용한 이더넷 스위칭 장치 및 방법{An Ethernet switching Apparatus and Method using Frame Multiplexing and Demultiplexing}
본 발명은 이더넷 스위칭 장치 및 방법에 관한 것으로서 보다 상세하게는, 다수의 1기가비트 이더넷 프레임(1 gigabit Ethernet frame)을 하나 이상의 10기가비트 이더넷 프레임(10 gigabit Ethernet frame)으로 다중화(multiplexing) 및 역 다중화(demultiplexing)하여 스위치 패브릭 칩셋의 내부 경로에 대한 정보가 없어도 프레임 전달 순서를 올바르게 할 수 있는 프레임 다중화를 이용한 이더넷 스위칭 장치 및 방법에 관한 것이다.
일반적으로 이더넷 스위치 장치를 구현함에 있어, 입출력 포트(port)의 프레임 전송 속도가 높지 않고 메모리 속도가 낮은 경우에는 공유 버스(shared bus) 구조를 사용한다. 그러나, 입출력 포트의 속도가 기가 비트급 이상이 되고 대용량의 이더넷 스위치가 필요한 경우에는 공유 버스의 대역폭 문제를 해결하기 위하여 크로스 포인트 매트릭스(crosspoint matrix)를 이용한 스위치 패브릭을 이용하여 이더넷 스위치 장치를 구현하게 된다. 그러나 이러한 경우에도 스위치 패브릭의 동작 속도는 가장 빠른 입출력 포트의 속도로 동작해야 하는 것이 필요하다.
이와 같은 이더넷 스위치 장치의 기술적 구현에 대한 간단한 내용은 저속의 입력 스트림(stream)을 보다 높은 속도의 데이터 스트림으로 시분할 다중화(TDM, Time Division Multiplex)하는 방식이 가장 현실적으로 보일 수 있다. 그러나 시분할 다중화(TDM)의 경우에는 각각의 입력 포트를 인식하도록 프레임 구성을 하여야 하며, 시분할 다중화(TDM) 특성 때문에 전용 채널을 사용하여야 하므로 대역폭 사용 효율이 낭비된다는 점을 단점으로 들 수 있다.
이와 같은 단점을 극복하기 위하여 종래에도 여러 가지 방법과 장치가 제안되었다.
그 일예로, 네트워크 스위치의 확장성을 위하여 제안된 미국특허 US Pat No. 06256306 B1(July, 2001)은 고속 이더넷 및 유사-브리지 프로토콜 등 LAN 표준기술을 조합한 라우팅 테이블과 프레임 버퍼를 내장한 버스 구조의 스위치 노드, 이에 연결된 다수의 이더넷 포트를 지닌 단위 스위치 모듈을 집적회로(IC) 형태로 구성하고, 이러한 다수의 단위 스위치 모듈들을 고속 이더넷 및 유사-브리지 프로토콜 등 LAN 표준기술을 조합하면 N x N 형태의 원자타입 스위치 메쉬(atomic type switch mesh) 구성이 가능하므로 확장성이 매우 큰 이더넷 네트워크 스위치 구성이 가능하다. 그러나, 이와 같은 방식은 네트워크 스위치의 확장성은 매우 큰 반면에 사용자 포트가 얻을 수 있는 포트 당 최대 처리 속도는 단위 스위치 모듈의 이더넷 포트에 국한되며, 더욱이 10기가비트 이더넷 포트를 사용자에게 제공하기 위해서는 버스 구조의 단위 스위치 모듈 자체가 10 기가비트 이상의 처리 능력이 있어야 한다는 문제점이 있었다.
또한, 집선기(concentrator)의 2기가급 백플레인과 기가비트급 광 이더넷 링크사이에 고속미디어의 삽입에 의한 고속 스위치 구조를 실현하기 위한 미국특허 US Pat No. 6310882 B1(October, 2001)은, 고속 미디어에서의 송신 및 수신 패킷에대한 포워딩 처리를 독립적으로 하여 광 링크의 효율을 높이려는 데 있다. 그러나 이와 같은 구조의 스위치는 근본적으로 최대 용량 및 대역폭이 광 링크의 전송속도로 제약을 받는 문제점이 있었다.
그리고, 다른 미국특허 US Pat No. 6249528 B1(July, 2001)은 ATM 포트와 이더넷 포트가 혼합된 스위치에서는 이더넷 프레임 포맷(format)과 ATM 포맷이 서로 다르므로 각각의 포트마다 필요한 ATM 셀(cell) 변환기 및 이더넷 프레임 변환기의 수효를 절감하는 방안으로서, ATM 포트에서 이더넷 포트로 패킷을 전송할 때는 ATM 포트에서 크로스바 스위치를 통하여 공유하는 이더넷 프레임 변환기로 보내서 이더넷 프레임으로 변환하고, 다시 이더넷 프레임 변환기에서 크로스바 스위치를 사용하여 원하는 이더넷 포트로 출력하고, 이더넷 포트에서 ATM 포트로 패킷을 전송하는 경우에는 이더넷 포트에서 크로스바 스위치를 통하여 공유하는 ATM 셀 변환기로 보내서 ATM 셀로 변환한 후에 다시 크로스바 스위치를 사용하여 원하는 ATM 포트로 전송하는 방식이다. 이러한 방식은 ATM 셀 변환기 및 이더넷 프레임 변환기의 수효는 절감할 수 있으나 크로스바 스위치를 두 번씩 사용하므로 ATM 포트와 이더넷 포트 사이의 패킷 전송 빈도가 커질수록 크로스바 스위치의 단위시간당 패킷 변환 처리 능력이 저하되는 문제점이 있었다.
또 다른 미국특허 US Pat No. 6246692 B1(June, 2001)은 데이터 링, 제어 링으로 구성된 링 페어(Ring pair)와 이러한 링 페어에 다수의 사용자 포트를 수용하는 단위 스위치 모듈들을 페어 링으로 연결하며, 그러한 링에서의 트래픽 관리를 위한 전용의 관리 장치를 링에 끼워 넣어 구성하는 방법으로 중저속 사용자 포트를가진 단위 스위치 모듈의 경우에는 cut-through 방식을 사용한 트래픽 처리를 하고, Gbps급 포트를 가진 단위 스위치 모듈은 전체 시스템의 성능 저하를 위하여 자원예약 할당 방식으로 서비스하도록 구성하며, 이러한 관리에 사용하는 방식은 전용의 프로토콜 방식을 사용한다. 그러나 이러한 방식 역시 스위치 장치의 핵심을 이루는 부분인 링의 전달속도에 따라 스위치 장치 전체의 용량이 결정되는 제약이 있으며, 전용의 장치 사용에 따른 프레임의 변환 부담의 문제점이 있었다.
이와 같이 종래의 시분할 다중화(TDM) 방식은 대역폭 사용 효율 저하가 발생하고, 링 방식을 사용한 스위치 장치의 경우는 링의 전달 속도를 10기가 이상으로 확장하여야 하며, 또한 크로스바 스위치 방식에서는 크로스바 스위치 자체의 처리 속도가 포트에서 얻을 수 있는 최대 속도가 되어버리는 문제점과 함께 전용 장치 또는 관리를 위한 전용 프로토콜 사용은 별도의 고속 스위치와 함께 변환된 고속 패킷을 원래의 이더넷 패킷으로 재변환 시키는 프로토콜 변환기가 필요하며, 또한 기존의 칩 셋(Chip set)과의 접속을 위한 별도의 인터페이스 회로가 필요한 문제점들이 있었다.
본 발명은 상기한 문제점을 해결하기 위하여, 범용의 기가비트 스위치 칩 셋을 사용하고 다중화기와 역다중화기에서 표준 인터페이스를 사용함으로써 범용의 칩(chip) 사용에 따른 비용을 절감하고 패킷 다중화를 수행함으로써 채널의 효율을 극대화 할 수 있는 프레임 다중화를 이용한 이더넷 스위칭 장치 및 방법을 제공하는 것을 목적으로 한다.
도 1은 본 발명에 적용되는 이더넷 프레임 포맷을 나타내는 구조도이다.
도 2는 본 발명에 따른 기가비트 이더넷 표준 인터페이스인 GMII를 나타낸 도면이다.
도 3은 본 발명에 따른 10기가비트 이더넷 표준 인터페이스인 XGMII를 나타낸 도면이다.
도 4는 본 발명에 따른 이더넷 스위칭 장치의 구성블록도이다.
도 5는 본 발명에 따른 프레임 다중화/역다중화기의 구성블록도이다
도 6은 본 발명에 프레임 역다중화기의 상세 구성도이다.
도 7은 본 발명에 따른 포트분석 및 제어처리 과정에서 사용되는 내부 테이블 구조도이다.
도 8은 본 발명에 따른 프레임 다중화/역다중화기의 PAUSE 제어과정을 보이는 흐름도이다.
도 9는 본 발명에 따른 프레임 다중화기의 상세 구성블록도이다.
도 10은 본 발명에 따른 포트_선택_제어블록이 사용하는 내부 테이블 구조를 나타낸 도면이다.
도 11은 본 발명에 따른 송신_처리블록이 사용하는 내부 테이블의 구성과 동작을 나타낸 도면이다.
* 도면의 주요 부분에 대한 부호의 설명 *
100 : 이더넷 프레임 101 : 프리엠블(preamble)
102 : 프레임 디리미터의 시작 103 :도착지 주소(DA)
104 : 출발지 주소(SA) 106 : 가상사설망 태그(VLAN tag)
107 : 종류 및 길이(type/length) 정보 108 : 데이터 및 패드
109 : 체크섬(checksum) 정보
205 :1000BASE-X/T 매체접근제어(GbE MAC, 1000Base-X/T MAC)
260 : 1000BASE-X/T 물리계층(GbE PHY)
401,404 : 10기가비트 미디어 독립 인터페이스
402,403 : 1기가비트 미디어 독립 인터페이스
520-1 : Frame_MUX 530-1 : Frame_DEMUX
521 : 입력_버퍼부 522 : 선택_변환부
523 : 선택_제어부 531 : 버퍼_변환부
532 : 포트_분석_제어부 533 : 포트_선택부
546 : 출력_버퍼부 615 : 역변환부
916 : PAUSE_검출부 921 : 포트_선택_변환부
922 : 변환_레인_생성부 926 : PAUSE_처리부
상기한 목적을 이루기 위하여 본 발명에 따른 프레임 다중화를 이용한 이더넷 스위칭 장치는, 10기가비트 미디어 독립 인터페이스(XGMII)의 형식에 따라 입력되는 10기가비트 이더넷 프레임을 복수의 기가비트 미디어 독립 인터페이스(GMII) 형식의 기가비트 이더넷 프레임으로 변환시켜 출력하는 복수의 프레임 역다중화기; 기가비트 미디어 독립 인터페이스(GMII)의 형식에 따라 입력되는 복수의 기가비트 이더넷 프레임을 10기가비트 미디어 독립 인터페이스(XGMII)의 형식의 10기가비트 이더넷 프레임으로 변환시켜 출력하는 복수의 프레임 다중화기; 및 입력 및 출력 인터페이스가 상기 기가비트 미디어 독립 인터페이스(GMII)를 지니고, 상기 복수의 프레임 역다중화기 및 상기 복수의 프레임 다중화기와 GMII의 형식으로 접속되며, 상기 프레임 다중화기로 보내는 프레임인 경우에는 그 프레임 다중화기에 접속된 다수의 GMII 포트들 중에서 임의의 사용 가능한 포트로 출력하고, 상기 프레임 다중화기 및 상기 프레임 역다중화기와 접속된 상기 GMII는 전이중(Full Duplex)방식으로 설정된 스위치 패브릭 칩 셋을 포함한다.
또한, 상기 목적을 달성하기 위한 본 발명에 따른 프레임 다중화를 이용한 이더넷 스위칭 방법은, 복수의 프레임 다중화기 및 프레임 역다중화기 쌍을 구비한 이더넷 스위칭장치에서 프레임 다중화를 이용한 이더넷 스위칭 방법에 있어서,
상기 프레임 역다중화는,
버퍼_변환부에서 10기가비트 미디어 독립 인터페이스(XGMII)의 형식에 따라 입력되는 10기가비트 미디어 독립 인터페이스 데이터를 저장하고 이를 기가비트 이더넷 매체접근제어 데이터로 변환시키는 제1 단계; 포트_분석_제어부에서 상기 변환된 기가비트 이더넷 프레임의 도착지 및 수신상태를 분석하여 출력할 포트를 선택하는 제2 단계; 출발지_입력부에서 다른 프레임 역다중화기의 출발지_출력부로부터 전달되는 10기가비트 이더넷 프레임의 출발지 정보를 받아 상기 포트_분석_제어부 내에 도착지 주소 테이블을 형성하고 상기 출발지_출력부는 상기 버퍼_변환부로부터 받은 프레임의 도착지 주소, 출발지 주소 및 역다중화기 번호정보를 상기 출발지_입력부로 전달하는 제3 단계; 포트_선택부에서 상기 버퍼_변환부에 의해 변환된 기가비트 이더넷 프레임을 특정 포트로 전달하는 제4 단계; 및 복수의 출력_버퍼부에서 상기 포트_선택부에 의해 선택된 다수의 기가비트 이더넷 프레임을 저장하고 출력하는 제5 단계; 를 포함하고,
프레임 다중화는,
복수의 입력_버퍼부에서 기가비트 미디어 독립 인터페이스(GMII)의 형식에 따라 입력되는 기기비트 이더넷 프레임을 저장하고 PAUSE 프레임을 검출하는 제6 단계; 상기 출발지_입력부에서 상기 다른 다중화기/역다중화기 상으로부터 전달되는 10기가비트 이더넷 프레임의 출발지 주소 정보를 선택_제어부로 전달하는 제7 단계; 상기 선택_제어부에서 상기 전달된 프레임의 출발지 주소 정보를 받아 상기 복수의 입력_버퍼부 중 하나를 선택하는 제어신호를 발생하는 제8 단계; 및 선택_변환부에서 상기 제어신호에 의해 복수의 기가비트 이더넷 프레임 중 하나를 선택하고 이를 10기가비트 미디어 독립 인터페이스(XGMII) 데이터로 변환하여 출력하는 제9 단계를 포함한다.
본 발명은 고속 이더넷 프레임 다중화를 이용한 이더넷 스위칭 장치 및 그 방법에 관한 것으로서, 기가 비트급의 저속 스위치 패브릭 칩셋을 사용하고 고속 이더넷 패킷(high-speed Ethernet packet)을 IEEE802 표준 인터페이스인 기가비트 미디어 독립 인터페이스(GMII, Gigabit Media Independent Interface) 및 10기가비트 미디어 독립 인터페이스(XGMII, 10 Gigabit Media Independent Interface)를 사용하여 다중화 및 역다중화하는 방식으로 다수의 1기가비트 이더넷 프레임(1 gigabit Ethernet frame)을 하나 이상의 10기가비트 이더넷 프레임(10 gigabit Ethernet frame)으로 다중화(multiplex) 및 반대로 역다중화(demultiplex)하여 기가 비트급 스위치 패브릭 칩셋과 연결하여 10기가 비트급 이더넷 스위칭 장치를 구현하기 위한 것는 것이다.
이러한 방식은 GMII 인터페이스를 지닌 범용의 기가비트 이더넷 스위치 패브릭 칩셋을 사용하고, 기기비트 이더넷 프레임을 10기가비트 이더넷 프레임으로의 다중화 및 역 다중화 방식을 사용하여 다수의 10기가 속도의 이더넷 포트를 지닌 이더넷 스위치를 구현이 가능하다. 따라서 저속의 스위치 칩셋을 사용하고, 고속의 프레임 처리 기능을 지닌 코프로세서(coprocessor) 등을 사용하지 않아 보다 경제적인 효과를 얻을 수 있다. 또한 입력과 출력 인터페이스 방식에 표준 인터페이스를 사용함으로써 기존의 범용 칩(chip)들을 사용할 수 있을 뿐만 아니라, 특히 사용하는 스위치 칩셋의 내부 경로에 대한 정보 없이도 프레임 전달 순서를 보장함으로서 칩셋 선택의 범위가 더 넓어져서 설계 시에 특정 칩셋 공급자의 의존성으로부터 보다 자유로울 수 있는 효과가 있다.
발명의 관점에서 보면 기가비트 이더넷 매체 접근제어(MAC, Media Access Control) 블록과 10기가비트 이더넷 트랜시버 사이에 IEEE 802.3 표준 인터페이스인 GMII 및 XGMII를 사용함으로써 범용의 스위치 칩 셋(예를 들어, SwitchCore CXE-16 및 CXE-2010, Intel IXE5416, IBM PRS64G, Marvell GT-4830xA; Marvel Prestera-EX120, GT-48360, IBM NP4GS3 등) 및 물리계층 칩을 사용하여 다수의 10기가비트 이더넷 포트를 지닌 이더넷 스위치 장치를 구현할 수 있을 뿐만 아니라, 이더넷 프레임을 프로토콜 변경 없이 그대로 다중화 및 역다중화 하여 전송할 수 있는 이점이 있으며, 기가비트 이더넷 스위치 칩 셋내에서의 스위치 경로 정보가 모르더라도 이더넷 스위치 기본원칙중의 하나인 프레임의 전달 순서가 어긋나지 않는다. 특히 패킷 분류(packet classification)나 트래픽 관리(traffic management) 등을 위한 코프로세서(co-processor)와 같은 고가의 복잡한 기능 블록을 사용하지 않고도 다이나믹(dynamic)하게 패킷을 다중화 하여 10기가 이더넷 프레임을 생성하여 전송할 수 있는 특징이 있다. 또한 기가비트 이더넷 프레임을 전송하는 경우에 10개 이상의 기가비트 이더넷 포트를 다중화 할 수 있는 장점을 제공한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일 실시 예를 상세히 설명한다.
도 1은 본 발명에 적용되는 이더넷 프레임 포맷을 나타내는 구조도로서, 일반적인 매체접근제어(MAC;Media Access Control) 프레임을 가진 이더넷에 적용되는 프레임 포맷의 구성을 나타낸 도면이다. 도 1을 참조하여, 이더넷 프레임(100)의 구성 및 동작을 IEEE 802.3에서 정의된 규격의 관점에서 살펴보면 다음과 같다.
즉, 10101010으로 이어지는 7 바이트의 프리앰블(preamble)(101) 이후에 프레임 디리미터의 시작(SFD;Start of Frame Delimiter)(102)인 10101011이 되면 SFD로 인식하여 매체접근제어(MAC) 프레임이 시작됨을 의미한다. 다음에는 6 바이트의 도착지 주소(DA;Destination Address)(103)와 6 바이트의 출발지 주소(SA;Source Address)(104)가 이어지며, 가상사설망(VLAN;Virtual Local Area Network)으로 사용되는 경우에는 다음 2 바이트가 가상사설망 태그(VLAN tag)임을 나타내는 2 바이트의 0x8100 값(105)과 그에 해당하는 2 바이트의 가상사설망 태그(VLAN tag)(106)가 이어진다.
다음의 2 바이트에는 종류 및 길이(type/length) 정보(107)가 나타나고, 계속해서 46 ~ 1500 바이트의 가변길이를 지닌 데이터 및 패드(pad)(108)가 나타나고, 마지막으로 4 바이트의 체크섬(checksum) 정보(109)가 추가된다. 이더넷의 최소 길이(minimum length)는 64 바이트로 규정되어 있으므로 데이터의 길이가 이보다 짧을 경우에 64 바이트로 맞추기 위하여 패드(pad)가 추가된다. 또한 연이어지는 프레임을 전송하는 경우에는 매체접근제어(MAC)의 프레임 처리 시간을 주기 위하여 이러한 프레임 사이에 인터프레임 갭(IFG;Inter Frame Gap)을 삽입한다. 이러한 프레임의 구조는 이더넷을 전이중(FDX;Full Duplex) 또는 반이중(HDX;HalfDuplex) 방식으로 전송하는 경우에 모두 사용 가능한 구조이며, 특히 이더넷 프레임을 기가비트 이상의 속도로서 전이중 방식으로 전송하는 경우에 사용하는 프레임 구조이다.
다음으로, 기가비트 이더넷의 메체접근제어(MAC)가 물리계층과 접속하는 표준 인터페이스인 기가비트 미디어 독립 인터페이스(GMII)의 구성 및 동작을 IEEE 802.3에서 정의된 규격의 관점에서 살펴보면 다음과 같다.
도 2는 본 발명에 따른 기가비트 이더넷 표준 인터페이스인 GMII를 나타낸 도면이다. 도 2를 참조하면, TxD<7:0>(201)는 1000BASE-X/T 매체접근제어(GbE MAC, 1000Base-X/T MAC)(250)에서 1000BASE-X/T 물리계층(GbE PHY)(260)으로 전달되는 전송 데이터로서 8 비트 병렬로 전송된다. GTX_CLK(202)는 이러한 TxD<7:0>(201) 데이터를 전송하기 위하여 상기 GbE MAC(250)에서 상기 GbE PHY(260)으로 전달하는 125MHz의 클럭(clock) 신호이다.
RxD<7:0>(203)는 상기 GbE PHY(260)가 수신한 데이터를 상기 GbE MAC(250)에 전송하는 수신 데이터로서 8 비트 병렬로 전송된다. 또한 GRX_CLK(204)는 이러한 RxD<7:0>(203) 데이터를 전송하기 위하여 상기 GbE PHY(260)에서 상기 GbE MAC(250)으로 전송하는 125MHz의 클럭(clock) 신호이다.
Tx_EN(205)은 데이터 전송 기간 동안에 상기 GbE MAC(250)에서 상기 GbE PHY(260)으로 데이터를 전송한다는 내용을 알리는 신호이다. 즉, GbE MAC(250)에서 GbE PHY(260)으로 데이터를 보내는 동안에는 논리적 신호 1(Logical One, 이하High로 약칭)이 되며, 데이터를 전송하지 않는 동안에는 논리적 신호 0(Logical Zero, 이하 Low로 약칭)으로 변한다. Tx_ER(206)은 실제의 데이터 전송 중에 오류가 발생하거나 캐리어 확장 및 캐리어 확장 오류 발생시에 High가 되며, 다른 경우에는 Low이다.
Rx_DV(207)는 데이터 전송 기간 동안에 상기 GbE PHY(260)에서 상기 GbE MAC(250)으로 데이터를 전송한다는 내용을 알리는 신호이다. 즉, GbE PHY(260)에서 GbE MAC(250)으로 데이터를 보내는 동안에는 High가 되며, 데이터를 전송하지 않는 동안에는 Low로 변한다.
COL(208)은 상기 GbE PHY(260)에서 상기 GbE MAC(250)에게 충돌이 발생하였음을 알리는 신호이다. 상기 GbE PHY(260)가 반이중(HDX) 동작 상태인 경우, 상기 GbE PHY(260)에서 상기 GbE MAC(250)에게 송신 및 수신 매체(transmit & receive medium)가 사용중일 때는 CRS(209)는 High가 되며 유휴 상태(idle state) 동안에는 Low로 변한다. 이러한 CRS(209)와 COL(208)은 기가비트 이더넷이 반이중(HDX) 방식으로 동작하는 경우에 사용되는 신호이다. 그러나, 상기 GbE PHY(260)가 전이중(FDX) 방식으로 동작일 때는 상기 GbE PHY(260)가 생성하는 CRS(209)와 COL(208) 신호를 상기 GbE MAC(250)은 무시한다. 그리고, 상기 GbE MAC(250)와 스테이션 관리 엔터티(STA;Station Management Entity) 사이의 MDC(210) 및 MDIO(211) 신호는 상기 GbE MAC(250)에서 상기 GbE PHY(260)의 동작 제어(즉, FDX 또는 HDX 등) 및 상태 정보 등을 가져오기 위한 신호들이다.
도 3은 본 발명에 따른 10기가비트 이더넷 표준 인터페이스인 XGMII를 나타낸 도면이다. 10기가비트 미디어 독립 인터페이스(XGMII)는 IEEE 802.3 에서 정의하는 MAC이 물리계층과 접속하는 표준 인터페이스 규격이다. 이러한 10기가비트 이더넷은 기가비트 이더넷과 달리 전이중(FDX) 방식만을 사용한다.
도 3에서, TxD<31:0>(301)는 10G BASE-X 매체접근제어(XGbE MAC, 10GBase-X MAC)(350)이 10G BASE-X PHY(XGbE PHY)(360)에게 전달하는 전송 데이터로서 32 비트 병렬로 전송하되, TxD<7:0>, TxD<15:8>, TxD<23:16> 및 TxD<31:24>와 같이 8 비트씩 4개의 레인(lane)으로 구분하여 전송한다.
TXC<3:0>(302)는 상기한 XGbE MAC(350)에서 XGbE PHY(360)으로 전달하는 4 비트의 병렬신호로서 TxD 신호가 데이터 신호인지 또는 제어 신호인지를 나타낸다. 즉, TXC<3:0>(302)의 각각의 신호선의 상태(High 또는 Low)에 따라, TXC<3:0>(302)중에서 TXC<0>는 TXD<7:0>, TXC<1>은 TXD<15:8>, TXC<2>은 TxD<23:16>, TXC<3>은 TxD<31:24>의 값들이 실제의 MAC 프레임 데이터인지 또는 MAC 프레임을 보내기 위한 프리앰블(preamble), SFD, 프레임의 종료(End of Frame)이거나 오류 표시 신호인지를 나타내는 역할을 수행한다.
TX_CLK(303)는 이러한 TxD<31:0>(301) 데이터를 전송하기 위하여 상기 XGbE MAC(350)에서 상기 XGbE PHY(360)으로 전달하는 156.25MHz의 클럭(clock) 신호이며, TxD<31:0>(301)과 TXC<3:0>(302)의 전송 방식은 이 클럭 신호와 동기되어 이중 데이터 레이트(DDR, Double Data Rate)방식을 사용한다.
RxD<31:0>(304)는 상기 XGbE PHY(360)가 수신한 데이터를 XGbE MAC(350)에게전달하는 전송 데이터로서 32 비트 병렬로 전송된다. 이때, RxD<7:0>, RxD<15:8>, RxD<23:16> 및 RxD<31:24>와 같이 8 비트씩 4개의 레인(lane)으로 구분하여 전송된다.
RXC<3:0>(305)는 상기한 XGbE PHY(360)에서 XGbE MAC(350)으로 전달하는 4 비트의 병렬신호로서 RxD 신호가 데이터 신호인지 또는 제어 신호인지를 나타낸다. 즉, RXC<3:0>(305)의 각각의 신호선의 상태(High 또는 Low)에 따라, RXC<3:0>(305)중에서 RXC<0>는 RXD<7:0>, RXC<1>은 RXD<15:8>, RXC<2>은 RxD<23:16> 및 RXC<3>은 RxD<31:24>의 값들이 실제의 MAC 프레임 데이터인지 또는 MAC 프레임을 보내기 위한 프리앰블(preamble), SFD, 프레임의 종료(End of Frame)이거나 오류 표시 신호인지를 나타내는 역할을 수행한다.
그리고, RX_CLK(306)는 이러한 RxD<31:0>(304) 데이터를 전송하기 위하여 XGbE PHY(360)에서 XGbE MAC(350)으로 전달하는 156.25MHz의 클럭(clock) 신호이며, RxD<31:0>(304)와 RXC<3:0>(305)의 전송 방식은 이 클럭 신호와 동기되어 DDR 방식을 사용한다. 또한, 상기 XGbE MAC(350)와 STA 사이의 MDC(307) 및 MDIO(308) 신호는 상기 XGbE MAC(350)에서 상기 XGbE PHY(360)의 동작 제어(속도 선택 등) 및 상태 정보 등을 가져오기 위한 신호들이다.
도 4는 본 발명에 따른 이더넷 스위칭 장치의 구성블록도이다. 도 4를 참조하면, GMII(402)은 도 2에 도시된 GMII 중에서 GbE MAC(250)이 GbE PHY(260)에게 데이터를 송신하는데 필요한 신호들인 TxD<7:0>, Tx_EN, Tx_ER, GTX_CLK과 관리에필요한 MDC, MDIO로 구성된다. 그리고 GMII(403)은 도 2에 도시된 GMII 중에서 GbE MAC(250)이 GbE PHY(260)으로부터 데이터 수신에 필요한 신호들인 RxD<7:0>, Rx_DV, Rx_ER, GRX_CLK, CRS, COL과 관리에 필요한 MDC, MDIO로 구성된다.
또한, XGMII(401)은 도 3에 도시된 XGMII 중에서 10G Base-X MAC(350)이 10G Base-X PHY(360)에게 데이터를 송신하는데 필요한 신호들인 TxD<31:0>, TXC<3:0>, TX_CLK과 관리에 필요한 MDC, MDIO로 구성된다. 그리고 XGMII(404)은 도 3에 도시된 XGMII 중에서 XGbE MAC이 XGbE PHY로부터 데이터 수신에 필요한 신호들인 RxD<31:0>, RXC<3:0>, RX_CLK과 관리에 필요한 MDC, MDIO로 구성된다.
도 4의 스위치 패브릭 칩 셋(Switch Fabric chip set)(450)은 GbE MAC(451), 기가비트 포워딩 엔진(GbE FE;Gigabit Ethernet Forwarding Engine)(452), 크로스바 스위치(cross-bar switch)(453) 및 GbE MAC(454, 454-11, ..., 545-1N, ..., 454-m1, ..., 454-mN)로 구성된 표준인테페이스 GMII를 지닌 범용의 스위치 칩셋이다. 그리고 GbE MAC(451)은 기가비트 이더넷 프레임을 수신하는 기능을 담당하고, GbE MAC(454)는 기가비트 이더넷을 송신하는 기능을 담당하므로 GbE MAC(451)과 GbE MAC(454)를 합치면 도 2의 1000 BASE-X/T MAC이 되므로 하나의 페어(pair)를 형성한다. 또한 상기 GbE MAC(454-11, ..., 545-1N, ..., 454-m1, ..., 454-mN)은 GbE MAC(454)과 동일한 기능과 구성이며, 단지 프레임_다중화기(Frame_MUX)(420-1, ..., 420-m)에 접속되는 것을 표시하기 위한 것이다. 따라서 표준인터페이스 GMII(403)을 통하여 들어오는 이더넷 프레임을 받아서 자체의 포워딩 엔진을 이용하여 이더넷 프레임의 목적지 주소(DA;Destination Address)를 내장된 주소테이블(address table)과 비교하여 스위치 경로(route)를 결정하여 표준인터페이스 GMII(402)을 통하여 출력한다. 이 경우 들어온 프레임이 프레임_다중화기(420-1, ..., 420-m)중의 하나로 출력하는 경우에는 그 프레임_다중화기(예:420-1)에 N 개의 GbE MAC(454)가 프레임_다중화기에 접속되어 있으므로 GbE FE(452)는 이 중에서 임의의 GbE MAC(454)에 출력하도록 설정한다(예를 들어, 동일한 MAC주소를 가진 1,..., N 개의 포트가 존재).
상기에서 GbE FE(452)가 특정 GbE MAC(454)를 선택하는 기법으로서 유휴 중인 기간이 가장 긴 GbE MAC을 선택하거나 또는 유휴 중인 GbE MAC이 없을 경우, 버퍼의 여유가 가장 큰 GbE MAC을 선택, 또는 프레임의 폐기 등 다양한 기법이 있을 수 있으나 이는 본 발명의 범위가 아니다.
도 4에서 GbE PHY(470-1, ..., 470-k)는 도 2의 1000BASE-X PHY(260) 중에서 송신 블록을 나타내며, GbE PHY(460-1, ..., 460-k)는 도 2의 1000BASE-X PHY(260) 중에서 수신 블록을 나타낸다. 따라서 도 4에서 왼쪽 GbE PHY와 오른쪽 GbE의 특정한 쌍(예: 470-1과 460-1)은 하나의 기가비트 물리계층 포트를 형성한다. 마찬가지로, XGbE PHY(440-1, ..., 440-m)는 도 3의 10G BASE-X PHY(360) 중에서 송신 블록을 나타내며, XGbE PHY(410-1, ..., 410-m)는 도 3의 10 G BASE-X PHY(360) 중에서 수신 블록을 나타낸다. 따라서 도 4에서 왼쪽 XGbE PHY와 오른쪽 XGbE의 특정한 쌍(예: 410-2과 440-2)은 하나의 10 기가비트 물리계층 포트를 형성한다.
한편, 도 4에서 Frame_DEMUX(430-1, ..., 430-m)은 XGMII(404)를 통하여 들어오는 10기가 이더넷 프레임을 기가비트 이더넷 프레임으로 역다중화하여GMII(403)을 통하여 스위치 패브릭 칩 셋(Switch Fabric chip set)(450)에게 전송하는 블록으로서, 도 5에 도시된 Frame_DEMUX(530-1) 블록과 동일하다. 또한 도 4에서 Frame_MUX(420-1, ..., 420-m)은 스위치 패브릭 칩셋(450)으로부터 들어오는 기가비트 이더넷 프레임을 10기가비트 이더넷 프레임으로 다중화하여 XGMII(401)을 통하여 XGbE PHY(410-1, ..., 410-m)으로 전송하는 블록으로서, 도 5에 도시된 Frame_MUX(520-1) 블록과 동일하다. 따라서 도 4에서 왼쪽 Frame_DEMUX와 오른쪽 Frame_MUX의 특정한 쌍(예: 420-m과 430-m)은 도 5의 MULDEX(500-1)과 같은 하나의 10 기가비트 다중화기/역다중화기 쌍을 형성한다.
도 5는 본 발명에 따른 프레임 다중화/역다중화기(MULDEX)의 구성블록도이다. 도 5를 참조하면, GMII(503), XGMII(501), XGbE PHY(510-1), XGbE PHY(510-2), XGMII(502), GMII(503)은 각각 도 4에서의 GMII(402), XGMII(401), XGbE PHY(410-1), XGbE PHY(440-1), XGMII(404), GMII(404)과 동일한 인테페이스임을 나타내며, 따라서 동일 기능을 수행한다. 또한 도 5에서 Frame_MUX(520-1), Frame_DEMUX(530-1)은 각각 도 4에서의 Frame_MUX(420-1), Frame_DEMUX(430-1)과 동일한 블록임을 나타내며, 따라서 동일한 기능을 수행한다. 또한 도 5에서 Frame_MUX(520-1)과 Frame_DEMUX(530-1)은 m개의 프레임 다중화/역다중화기 중의 하나인 MULDEX(500-1)을 형성한다. 따라서 MULDEX(500-2), ..., MULDEX(500-m)이 있으나, 모두 연결되는 물리계층들인 XGbE PHY, Frame_MUX, Frame_DEMUX의 번호만 다를 뿐, 모두 MULDEX(500-1)과 동일한 기능을 수행한다.
도 5에서 입력 버퍼(521-1, ..., 521-N)는 GMII(503)을 통하여 도 4의 스위치 패브릭 칩셋의 GbE MAC(454-11, ..., 454-1N)과 접속되며, 출력 버퍼(534-1, ..., 534-N)는 GMII(6504)을 통하여 도 4의 스위치 패브릭 칩셋(Switch Fabric chip set)(450)의 GbE MAC(451)과 접속이 된다. 그리고 이와 같이 MULDEX(500-1, ..., 500-m)과 GMII(503), GMII(504)을 통하여 접속되는 스위치 패브릭 칩셋(Switch Fabric chip set)(450)의 GbE MAC(451, 454-11, 454-1N, ..., 454-m1, 454-mN)은 모두 전이중(FDX)방식으로 동작한다. 도 5에서 Frame_MUX(520-1)은 입력_버퍼(input_buffer)(521-1, ..., 521-N)와 선택_변환(select_control)(522)블록, 선택_제어(select_control)(523)블록, SA_in(524)블록 및 MUX_STA(528)으로 구성된다. 또한 도 5에서 Frame_DEMUX(530-1)은 출력_버퍼(output_buffer)(534-1, ..., 534-N)와 포트_선택(port_select)(533)블록, 버퍼_변환(buffer_convert)(531)블록, 포트_분석_제어(port_analysis_control(532)블록, SA_out(535)블록 및 DEMUX_STA(538)으로 구성된다.
도 5에서 입력 버퍼(input_buffer)(521-1, ..., 521-N)는 GMII(503)을 통하여 들어오는 기가비트 이더넷 프레임을 받아들여 저장하였다가 선택_변환(select_control)(522)블록에 전달하는 기능을 하며, 상기 입력_버퍼(521-1, ..., 521-N) 내부의 PAUSE_detect(526-1, ..., 526-N)블록은 입력되는 이더넷 프레임들 중에서 PAUSE control frame을 검출하고, 해석하여 그 정보를 출력_버퍼(output_buffer)(534-1, ..., 534-N)의 해당하는 PAUSE_process(546-1, ..., 546-N)에 전달한다. 또한 도 5에서선택_변환(select_convert)(522)블록은 XGMII(501)을 통하여 10기가 이더넷 프레임을 송신한 이후에 선택_제어(select_control)(523)의 신호에 의하여 입력_버퍼(521-1, ..., 521-N) 중에서 특정 입력_버퍼를 선택하여 그 입력 버퍼가 수신한 프레임을 10기가비트 이더넷 프레임으로 변환하여 XGMII(501)을 통해 XGbE PHY(510-1)으로 송신하는 기능을 한다. 선택_제어(select_control)(523)블록은 선택_변환(select_convert)(522)블록이 특정 입력_버퍼(521-i, i=1~N 중의 하나)를 선택하도록 정보를 주는 기능을 하며, SA_in(524)블록은 다른 Frame_DEMUX(이 경우는 530-2, ..., 530-m)이 보내는 SA 정보를 받아들인다. 도 5의 SA_out(535)블록은 다른 MULDEX(500-1, ..., 500-N)의 SA_in(524)블록들에게 SA정보를 보내는 블록이다. 그리고 공통버스(common_bus)(540)는 각 MULDEX-1, ..., MULDEX-m의 SA_in 블록과 SA_out 블록들을 공통으로 연결하기 위한 공통 버스(common bus)이다. 그리고 MUX_STA(528)은 MDC, MDIO를 통하여 Frame_MUX(520-1)의 상태 정보를 전달한다.
도 5에서 버퍼_변환(531)블록은 XGMII(502)을 통하여 XGbE PHY(510-2)으로부터 수신한 10기가비트 이더넷 프레임을 저장하고, 기가비트 이더넷 프레임으로 변환하는 기능을 수행한 다음에는 포트 분석 및 제어(532)블록에게 필요한 전보를 주면 포트 분석 및 제어(532) 블록은 포트 선택(533)블록이 출력버퍼(534-1, ..., 534-N)중에서 특정 출력 버퍼를 선택하여 기가비트 이더넷 프레임을 전달하며, 또한 SA출력(SA_out)(535)을 통하여 다른 Frame_MUX(이 경우는 520-2, ..., 520-N)과 다른 Frame_DEMUX(이 경우는 530-2, ..., 530-N)에 SA정보를 보낸다. 또한 도 5에서 출력 버퍼(534-1, ..., 534-N)는 포트선택(533)을 통하여 들어오는 기가비트 이더넷 프레임을 받아들여 저장하였다가 GMII(504)을 통하여 기가비트 이더넷 프레임을 출력하는 기능을 하며, 또한 입력버퍼의 PAUSE검출(546-1, ..., 546-N)블록의 신호에 의하여 현재 출력중인 이더넷 프레임의 출력 완료시점이후에는 PAUSE정보에 있는 시간만큼 이더넷 정보의 송신을 중지한다. 이 경우에 PAUSE중인 출력버퍼는 선택_제어(522)블록의 PAUSE_process(527)블록에게 정보를 주어서 PAUSE 기간동안 프레임이 오지 않도록 하며, 계속해서 프레임이 유입되어 버퍼의 오버플로우(overflow) 위험이 감지되면 RED(Random Early Discard)등의 기법으로 프레임을 폐기처분한다. 그리고 DEMUX_STA(538)은 MDC, MDIO를 통하여Frame_DEMUX(530-1)의 상태 정보를 전달한다.
또한, 도 5에서 PAUSE_detect(537)블록은 XGMII(502)을 통하여 입력된 PAUSE 프레임을 검출한 다음에 그 프레임을 모든 출력버퍼(534-1, ..., 534-N)들을 통하여 전송하고 또한 Frame_MUX(520-1)의 PAUSE_process(527)블록에게 전달한다. Frame_MUX(520-1)의 PAUSE_process(527)블록은 PAUSE_detect(537)블록이 전달한 PAUSE정보에 있는 시간만큼 이더넷 정보의 송신을 중지하거나 또는 현재 PAUSE 상태에 있는 출력버퍼(534-1, ..., 534-N)의 수효가 어떤 기준 값(threshold number, 사용자 설정)을 넘어서면 적당한 PAUSE 시간정보(사용자 설정)를 지닌 PAUSE 프레임 신호를 생성하여 XGMII(501)을 통하여 출력한다.
도 6은 본 발명에 프레임_역다중화기의 상세 구성도이다. 도 6에 도시된 GMII(602), XGMII(601)는 도 5에 도시된 표준인터페이스 GMII(504), XGMII(502)와동일한 인터페이스이다. 또한, 프레임_역다중화기(Frame_DEMUX)(600-1) 내부에 표시된 버퍼_변환(buffer_convert)(610)블록, 포트_선택(port_select)(630)블록, 포트분석제어(port analysis control)(620)블록, SA출력(SA_out)(650)블록, 역다중화부_상태모니터(DEMUX_STA)(680)블록, 출력_버퍼(output_buffer)(660-1, ..., 660-N)는 도 5에 도시된 프레임_역다중화기(Frame_DEMUX)(530-1) 내부에 표시한 버퍼_변환(buffer_convert)(531)블록, 포트_선택(port_select)(533)블록, 포트_분석_제어(port_analysis_control)(532)블록, SA출력(SA_out)(535)블록, 역다중화부_상태모니터(DEMUX_STA)(538)블록, 출력_버퍼(output_buffer)(534-1, ..., 534-N)와 동일한 기능 블록이다. 그리고 도 6에서 프레임_역다중화기(Frame_DEMUX)(600-1) 내부의 SA_입력(SA_in)(640)블록은 도 5의 프레임_역다중화기(Frame_DEMUX)(530-1) 내부의 SA_입력(SA_in)(524)블록과 같은 기능 블록이다. 따라서 Frame_DEMUX(600-1)은 도 5의 Frame_DEMUX(510-1)과 동일하다.
도 6에서 버퍼_변환(buffer_convert)(610)블록은 XGMII(601)의 RxD<31:0>과 연결된 수신데이터버퍼(RD_buf)(611), XGMII(601)의 RxC<3:0> 및 RX_CLK와 연결된 수신상태버퍼(RC_buf)(612), 시작_종료_검출(SOF_EOF detect)(613)블록, 역변환부(de-convert)(615), 도착주소검출(DA_SA_FCS detect)(614)블록, 후술하는 도 9의 PAUSE_process(926)과 연결된 PAUSE_detect(616)으로 구성된다.
또한, 포트_선택(port_select)(630)블록은 역변환(de-convert)(615)블록과 연결된 선택기(selector)(631)블록, 포트_비교_제어(port_compare_control)(621)블록과 연결된 cp(633), IFG_삽입(IFG_insertion)(632)블록으로 구성된다.포트_분석_제어(port_analysis_control)(620)블록은 SA_in(640)과 연결된 도착지주소처리(DA_proc)(622)블록, SA_out(650)과 연결된 출발지주소처리(SA_proc)(623) 및 포트_비교_제어(port_compare_control)(621)블록으로 구성된다.
또한, 출력_버퍼(output_buffer)(660-1)블록은 GMII(602)의 RxD<7:0>과 연결된 데이터_출력(Data_out)(661), GMII(602)의 Rx_ER과 연결된 에러_입력(error_out)(663), GMII(602)의 RxDV와 연결된 인에이블_출력(enable_out)(663), 포트비교제어(621) 및 도 9의 PAUSE_detect(916)와 연결된 PAUSE_process(666)으로 구성된다. 또한 나머지 출력_버퍼(660-2, ..., 660-N)블록의 내부 구성블록과 연결은 모두 출력_버퍼(660-1)블록과 같다.
역다중화기_상태모니터(DEMUX_STA)(680)블록은 상태정보를 GMII 및 XGMII를 통하여 출력하며, 이러한 구체적인 내용과 방법은 구현에 따라 다르고 본 발명의 범위가 아니다.
앞에서 기술된 바와 같이 10기가비트 이더넷 프레임은 XGMII(601)을 통하여 버퍼_변환(buffer & convert)(610)블록 내부의 수신데이터_버퍼(RD_buf)(611)와 수신상태_버퍼(RC_buf)(612)에게 각각 RxD<31:0>, RXC<3:0>와 RX_CLK를 제공한다. RX_CLK 는 162.25MHz의 클럭신호이며, RxD<31:0>와 RXC<3:0>는 각각 32 비트와 4 비트의 병렬 신호이다.
수신데이터_버퍼(RD_buf)(611)와 수신상태_버퍼(RC_buf)(612)는 읽기(read)와 쓰기(write)가 독립적으로 수행 가능한 라운드 로빈(round robin) 형태의 버퍼(buffer)이고, RxD<31:0>과 RXC<3:0>를 병렬로 저장하며, RX_CLK 정보에 따라DDR 방식으로 동작하는 수신데이터버퍼 블록과 수신상태 버퍼 블록이다. 이 경우, 이더넷 프레임을 수신하지 않는 유휴(idle) 상태에서의 RxD<31:0>의 값은 유휴 데이터(idle data)(즉 RxD<7:0>, RxD<15:8>, RxD<23:16>, RxD<31:24>의 값이 모두 0x07)이며, RXC<3:0>의 값은 모두 High(즉 0xF)이다.
시작_종료_검출(SOF_EOF_detect)(613)블록은 수신데이터_버퍼(RD_buf)(611)와 수신상태_버퍼(RC_buf)(612)의 출력인 RxD<31:0>과 RXC<3:0>을 연속하여 검사하여 이더넷 프레임의 시작과 끝을 찾아낸다. 즉, RxD<31:0>의 값이 유휴 데이터(Idle data)이고 RXC<3:0>의 값이 모두 High인 상태에서 RxD<7:0>의 값이 프레임 시작 데이터(frame start data, 즉 0xFB)이고, RxD<15:8>, RxD<23:16>, RxD<31:24>의 값이 모두 프리앰블(preamble) 값(즉 0xAA)이며, TXC<3:0>의 값이 0x1이면 연속되는 다음의 RxD<7:0>, RxD<15:8>, RxD<23:16>, RxD<31:24>의 값이 각각 프리앰블(preamble) 값, 프리앰블(preamble) 값, 프리앰블(preamble) 값, 프레임 디리미터의 시작(SFD, Start of Frame Delimiter, 즉 0xFB)이면 다음 데이터부터는 정상적인 이더넷 MAC 프레임 데이터가 시작되는 것으로 판단하고, 4개의 출력 상태를 모두 Low에서 High로 변화시켜 역변환기(de-convert)(615)블록과 도착주소검출(DA_SA_FCS_detect)(614)블록에게 다음의 RxD<31:0>들은 도착주소(Destination Address: DA) 정보부터 시작되는 이더넷 MAC 프레임이라는 것을 알려준다.
시작_종료_검출(SOF_EOF detect)(613)블록의 출력인 4개 신호는 RxD<7:0>, RxD<15:8>, RxD<23:16>, RxD<31:24>에 상응하는 신호로써 각각의 값이 체크섬(checksum)까지의 이더넷 프레임 정보(프레임내부의 Error 포함)이면 High,나머지의 경우에는 Low로 변화한다.
예를 들어, 이더넷 프레임의 체크섬(checksum) 정보가 RxD<7:0>, RxD<15:8>까지 종료되고 RxD<23:16>에 10기가 이더넷 프레임 종료 신호(terminate, 즉 0xFD) 및 RxD<31:24>에 idle(즉 0x07) 값이면 이때의 수신상태버퍼(RC_buf)(612)의 출력은 0xC이고 시작_종료_검출(SOF_EOF detect)(613)블록의 출력은 0x3을 출력하여 이더넷 프레임이 RxD<15:8>에서 종료되었음을 나타낸다.
그리고, 역변환기(de-convert)(615)블록 수신데이터_버퍼(RD_buf)(611)가 수신한 RxD<31:0> 을 4개의 RxD<7:0>로 변환하여 저장하는 8 바이트 이상의 라운드 로빈(round robin) 형태의 버퍼(buffer)를 지니고 있다. 따라서, 시작_종료_검출(SOF_EOF detect)(613)블록의 출력이 모두 Low에서 모두 High로 변화하면 역변환기(de-convert)(615)블록은 프레임 시작 데이터(frame start data) 즉 0xFB 값을 프리앰블(preamble) 값으로 변환한다.
또한 시작_종료_검출(SOF_EOF detect)(613)블록의 출력이 모두 High인 상태에서 수신상태버퍼(RC_buf)(612)에 수신된 RXC<3:0>의 값이 0x0가 아닌 경우에는 역변환기(de-convert)(615)블록은 해당되는 RXC<0>, RXC<1>, RXC<2>, RXC<3>의 RxD 데이터를 검사하여 그 값이 에러(error) 신호(즉 0xFE) 이면 선택(selector)(631)블록을 통하여 선택된 에러_출력(error_out)(662)의 해당하는 위치의 비트를 High로 만든다.
그리고 역변환기(de-convert)(615)블록은 시작_종료_검출(SOF_EOF detect)(613)블록의 정보에 의하여 프리앰블(preamble) 신호부터 체크섬(checksum)까지 기간동안 선택기(selector)(631)블록을 통하여 선택된 인에이블_출력(enable_out)(663)의 해당 위치들의 비트를 High로 만든다.
따라서, 선택기(selector)(631)블록은 cp(633)가 지시하는 특정 포트(port), 즉 출력_버퍼(660-1, ..., 660-N중의 하나)를 선택하여 역변환기(de-convert)(615)블록 또는 인터 프레임갭_삽입(IFG insertion)(632)블록이 생성한 RxD<7:0>, Rx_DV, RX_ER 신호 정보들을 해당 버퍼(buffer)에 전달하는 역할을 하며, 여기에서는 편의상 첫 번째 출력_버퍼 블록(즉, 660-1)이 선택되었다고 가정한다.
도착주소검출(DA_SA_FCS_detect)(614)블록은 시작_종료_검출(SOF_EOF detect)(613)블록의 출력이 모두 Low에서 모두 High로 변화하면 다음에 계속되는 6 바이트의 값을 포트_비교_제어(port_compare_control)(621)블록에게 출력한다.
도착지처리(DA_proc)(622)블록은 도착지 주소(DA)와 그 DA가 속한 다른 다중화기 번호 정보가 테이블 형태로 저장, 갱신 및 소멸하는 형태로 운영되는 블록이다. 따라서 도착_주소_검출(614)블록을 통하여 얻어진 DA가 도착지_처리(622)블록에 있다면 그 프레임은 다른 다중화기(도 4에서 420-2, ..., 420-m)로 보내질 프레임이라는 것을 의미하며, 도착지_처리(622)블록에 없는 경우에는 미지(unknown)의 프레임이거나 기가비트 포트(예로서, 도 4에서 460-1, ..., 460-k)로 보내어질 프레임이라는 것을 의미한다. 따라서 다중화기 및 역다중화기가 1 쌍(1 pair)만으로 구성된 경우에는 도착지_처리(DA_proc)(622), 출발지_처리(SA_proc)(623), SA_in(640) 및 SA_out(650)이 필요하지 않다.
출발지_처리(SA_proc)(623)블록은 출발지 주소(SA; Source Address)를 테이블 형태로 저장, 갱신 및 소멸하는 형태로 운영되는 블록이다. 따라서 도착_주소_검출(DA_SA_FCS_detect)(614)로부터포트_비교_제어(port_compare_control)(621)블록을 거쳐 전달되는 SA와 FCS 정보가 들어오면 도 7의 DA_table(740) 작용에 의하여 SA와 FCS 및 자신의 Frame_DEMUX 번호(여기에서는 600-1)를 해당된 다른 Frame_MUX에게 SA_out(650)을 통하여 전달한다. 또한 출발지_처리(SA_proc)(623)블록은 도 7의 SA_table(710) 작용에 의하여 설정된 시간마다 SA와 자신의 Frame_DEMUX 번호(여기에서는 600-1)를 다른 Frame_DEMUX들(600-2, ..., 600-N)에게 SA_out(650)을 통하여 전달한다.
한편, 도 6에서의 포트_비교_제어(port_compare_control)(621)블록은 도착_주소_검출(DA_SA_FCS_detect)(614)블록으로부터 얻은 정보와 출력_버퍼(output_buffer)(660-1, ..., 660-N)로부터 각 출력_버퍼의 PAUSE 상태정보 및 출력_버퍼의 여유 정보 등을 받아서 다음과 같이 동작한다.
1). 먼저, 도착_주소_검출(DA_SA_FCS_detect)(614)블록으로부터 얻은 6 바이트의 도착지 주소(DA: Destination Address)가 도착지_처리(DA_proc)(622)블록에 저장된 도착지주소 테이블(DA_table)(도 7의 740)에 있는지를 검사하여, 있는 경우에는 도착지 주소(DA)와 함께 저장된 다른 프레임_다중화기 번호(예로써 도착지주소인 DA가 DA2일 경우 GMX(742)에서 MX-2이며, 따라서 두 번째 프레임_다중화기)를 읽어낸 후에 도착_주소_검출(DA_SA_FCS_detect)(614)블록으로부터 얻은 출발지 주소(SA:Source Address)와 체크섬(checksum 즉, FCS) 정보를 SA_out(650)을 통하여 그 프레임_다중화기(도 4에서 두 번째 프레임_다중화기인 420-2)의 처리 블록(즉,도 9의 xmit_process(932))으로 전달하고, 동시에 DA2에 대응하는 DXA(744)의 aging 상태정보를 수정한다. 다음에는 출력_버퍼(output buffer)(660-1, ..., 660-N)중에서 유휴중인 출력 버퍼가 있는 임의의 출력_버퍼를 선택하고, 모두 사용중일 경우에는 출력 버퍼의 여유가 가장 큰 출력_버퍼를 선택하여 cp(633)에 정보를 기록한 다음에는 도 7의 출발지주소_테이블(SA_table)(710)의 SAG(723) 열(column)을 검사하여 해당하는 SA가 있는 경우에는 그 SA와 pair를 이루눈 SXA(724) 열의 엔트리에 있는 aging상태정보만을 갱신하고, SA가 없다면 새로운 엔트리 pair로서 SAG(723)과 SXA(724)에 SA와 aging상태정보를 추가한 이후에 TSA(713)에도 SAG(723)에 추가하였던 SA를 추가하고 NSA(712)의 값을 1만큼 증가한다.
2). 도착_주소_검출(DA_SA_FCS_detect)(614)블록으로부터 얻은 6 바이트의 도착지 주소(DA)가 도착지_처리(DA_proc)(622)블록에 저장된 도착지주소_테이블(DA table)(740)에 없는 경우에는 사용빈도테이블(HUT)(730)의 GDA(731)에 있는지 검사하여 있는 경우에는 해당하는 OBN(732)의 출력버퍼를 선택하여 cp(633)에 정보를 기록한다.(예로써 도착주소검출(614)블록으로부터 얻은 DA가 GDA(731)의 DA-3인 경우에는 OB-7이므로 7번째 출력버퍼를 선택)
3). 마지막으로, 도착_주소_검출(DA_SA_FCS_detect)(614)블록으로부터 얻은 6 바이트의 도착지 주소(DA)가 도착지_처리(DA_proc)(622)블록에 저장된 도착지_주소 테이블(DA_table)(이력)에 없는 경우에는 사용빈도테이블(HUT)(730)의 GDA(731)에 모두 없는 경우에는 출력_버퍼(660-1, ..., 660-N)중에서 유휴(idle)중인 출력 버퍼가 있는 임의의 출력버퍼를 선택하고, 모두 사용중일 경우에는 출력 버퍼의 여유가 가장 큰 출력_버퍼를 선택하여 cp(633)에 정보를 기록한 다음에 사용빈도테이블(HUT)(622)에 현재 선택한 출력버퍼 번호와 DA 및 Aging정보를 사용빈도테이블(HUT)(730)의 새로운 엔트리로 추가한다.
이와 같이, 포트_비교_제어(port_compare_control)(621)블록이 특정 출력_버퍼 번호를 cp(633)에 입력하면 선택기(631)블록은 cp(633)가 지정하는 특정 출력버퍼(660-1, ..., 660-N중의 하나)에 역변환기(615)블록이 변환한 이더넷 프레임을 전달한다.
IFG_삽입(IFG insertion)(632)블록은 선택기(Selector)(631)블록이 데이터_출력(data_out)(661)로 이더넷 프레임의 체크섬(checksum)까지 전달한 직후에 인터프레임 갭(IFG) 신호를 데이터_출력(Data_out)(661)에 있는 이더넷 프레임의 체크섬(checksum) 다음에 추가하고, 이와 동일한 위치의 에러_출력(error_out)(662), 인에이블_출력(enable_out)(663)값들을 각각 Low, Low로 만든다.
수신_클럭_생성(GRX_CLK gen)(665)블록은 125MHz의 GRX_CLK clock 을 생성하여 통하여 데이터_출력(Data_out)(661), 에러_출력(error_out)(662), 인에이블_출력(enable_out)(663)에 공급하고 GMII(602)를 통하여 출력한다.
또한, 데이터_출력(Data_out)(661), 에러_출력(error_out)(662), 인에이블_출력(enable_out)(663)은 선택기(selector)(631)블록을 통하여 RxD<7:0>, RX_DV, RX_ER을 저장하는 FIFO 형태의 버퍼이며, 송신_클럭_생성(GRX_CLK gen)(665)블록의 GRX_CLK clock에 동기되어 동작하고, empty 상태에서는 항상 Low를 출력한다.
도 7은 본 발명에 따른 포트분석 및 제어처리 과정에서 사용되는 내부 테이블 구조도로서, 도착지_처리(DA_proc)(622)블록 및 출발지_처리(SA_proc)(623)블록에서 사용되는 내부 테이블 구조도이다. 도 7의 출발지_테이블(SA_Table)(710)은 도 6의 출발지_처리(SA_proc)(623)블록에서 사용하며, 사용빈도테이블(HUT)(730)은 도 6의 포트_선택_제어(621)블록이 사용하고, 도착지_테이블(DA_table)(740)은 도착지_처리(622)블록이 사용하는 테이블이다.
도 7에서 사용빈도테이블(HUT)(730)의 GDA(731), OBN(732), DGA(734)는 각각 프레임의 도착지주소(DA), 출력_버퍼 번호 및 aging시간을 표시한다. 예로써 도 6의 Frame_DEMUX(600-1)이 수신한 프레임의 도착지 주소가 DA-2이면 GDA(731)의 두 번째 칸에 해당되고, 따라서 OBN(732)의 두 번째 칸의 내용이 OB-3이므로 세 번째 출력버퍼인 도 6의 출력_버퍼(660-3)을 통하여 수신한 프레임을 전송하라는 의미이며, SAG(734)의 두 번째 칸의 값인 aging-2는 두 번째 엔트리인 DA-2,OB-3,aging-2 터너리(ternary: 3개 1조)가 aging-2 시간이후에는 사용빈도테이블(HUT)(730)에서 소멸되는 것을 의미한다. 사용빈도테이블(HUT)(730)의 목적은 Frame_DEMUX가 수신한 도착지는 같고, 서로 다른 길이의 프레임들이 임의의 출력_버퍼(660-1, ..., 660-N)와 스위치 패브릭 칩셋(450)을 거쳐서 도 4의 동일한 GbE PHY(예:460-1)으로 전달될 때 프레임의 순서가 어긋나는 것을 방지하기 위함이다. 따라서 새로운 DA,OB,aging 엔트리가 생성될 때 aging 시간 값은 최대길이의 프레임이 도 6의 출력_버퍼(660-1)에 머무는 시간과 스위치 패브릭 칩셋(450)에서의 최장 전달 지연시간을 합친 시간 정도로 결정한다(aging 시간이 너무 짧으면 프레임 전달 순서가 뒤바뀔 위험이 있다). 따라서 수신한 프레임이 프레임 전달 순서 때문에, 전달할 수 있는 유휴 출력_버퍼가 있음에도 반드시 특정 출력_버퍼를 사용하여야 하고, 따라서 frame들이 특정 출력_버퍼에 집중되는 현상을 방지하고 분산시키는 효과를 얻을 수 있다.
도 7에서 출발지_테이블(SA_Table)(710)의 SAB(711)은 TSA(713)의 시작점을 가리키는 pointer이며, TSA(713)는 SAG(723)에 새로운 SA를 추가할 때마다 함께 추가하는 SA들을 연이어 보관하는 버퍼이며, NSA(712)는 TSA(713)이 현재 보관중인 SA들의 수효를 나타낸다. 그리고 SAG(723), SXA(724)는 각각 어떤 시간동안(aging time) 도 6의 XGMII(601)을 통하여 들어온 10기가 이더넷 프레임의 출발지 주소(DA)들을 수집하여 저장한 테이블로써 SAG(723)의 각 항목들은 서로 다른 SA를 나타낸다. 또한 SXA(724)의 서로 다른 aging 상태 값들은 현 시점에서 해당하는 SA에 대한 aging 처리 정보를 나타낸다. 앞에서 기술한 바와 같이 도 6의 XGMII(601)로부터 수신한 프레임의 출발지주소(SA)를 SAG(723)과 비교하여 동일한 SA가 있는 경우에는 이와 pair를 이루는 SXA의 정보만을 수정하고, 없는 경우에는 새로운 SA, aging 상태정보 pair를 추가하며, TSA(713)에 SA 정보의 항목을 추가한다. 그리고 TSA(713)은 어떤 설정된 주기별로 그동안에 TSA(713)에 저장된 SA 정보들과 자신의 번호(즉 Frame_DEMUX 번호; 예로써 600-1이므로 1 )를 도 6의 SA_out(650)을 통하여 자신이 아닌 다른 Frame_DEMUX(600-2, ..., 600-m)들에게 전달한 다음에는 NSA(712)의 값을 0으로 수정한다.
또한 도 7의 도착지_테이블(DA_table)(740)은 도착지주소(DA), Frame_MUX번호, aging 상태정보를 각각 나타내는 XDA(741), GMX(742), XDA(744)인 터너리(ternary)로 구성되어 있으며, 이 테이블은 앞에서 기술된 바와 같이 도 6의 XGMII(601)을 통하여 수신한 프레임을 또 다른 프레임_다중화기(Frame_MUX)로 보낼 것임을 나타내는 도착지주소(DA) 정보를 지니고 있으며, 일정 주기별로 다른 Frame_DEMUX(600-2, ..., 600-m)이 보내온 SA정보들과 Frame_DEMUX 번호 정보를 보내면 도 6의 도착지처리(DA_proc)(622)는 SA_in(640)을 통하여 받아서 SA 정보는 XDA(741)에 추가하고, Frame_DEMUX 번호는 GMX(742)에 들어온 추가하고 대응되는 DXA(744)에 역시 SA 수효만큼 새로운 aging 상태정보를 추가한다.
도 7에서 SA_table(710)의 SXA(724)의 aging처리에 의하여 설정된 기간동안 사용하지 않는 SA는 SAG(723)에서 제거가 된다. 마찬가지로 DA_table(740)의 DXA(744)의 aging 처리에 의하여 설정된 기간동안 사용하지 않은 SA는 XDA(741)에서 제거된다. 이러한 aging 처리에 대한 구체적인 방식과 설정 주기들은 이미 기존의 문헌(예:Rich Seifert, "The Switch Book, Ch.2" 등)에 설명되어 있다.
도 8은 본 발명에 따른 프레임 다중화/역다중화기의 PAUSE 제어과정을 보이는 흐름도를 도시한 것이다. 구체적으로 도 8(a)는 GMII 측 PAUSE 검출/처리 과정으로서 GMII를 통하여 입력/출력되는 기가비트 이더넷 프레임의 PAUSE 프레임을 검출 및 처리하는 과정을 보이는 흐름도이고, 도 8(b)는 XGMII 측 PAUSE 검출/처리 과정으로서 XGMII를 통하여 입력/출력되는 10기가 비트 이더넷 프레임의 PAUSE 프레임을 검출 및 어리하는 과정을 보이는 흐름도이다.
먼저, 도 8(a)를 참조하면, 도 5에 도시된 GMII(503)을 통해 들어오는 기가 이더넷 프레임을 수신하면(811), 입력_버퍼(521-1, ..., 521-N)블록으로 들어온 상기 이더넷 프레임이 PAUSE 프레임인지의 여부를 PAUSE_검출(526-1, ..., 526-N)블록이 검사한다(812). 상기 검사결과 PAUSE 프레임이 아닌 경우에는 정상동작 과정으로 진행하여 통상적인 기가비트 이더넷 프레임을 처리하는 과정을 수행하고, PAUSE_검출(526-1, ..., 526-N)블록은 입력_버퍼(521-1, ..., 521-N)블록이 다음 번의 프레임 수신완료 시기까지 대기한다(821). 그러나, 상기 검사결과 상기 수신한 이더넷 프레임이 PAUSE 프레임인 경우에는 PAUSE_info에 의하여 PAUSE 정보(입력_버퍼 번호 및 PAUSE 시간 등)가 해당 출력_버퍼 블록의 PAUSE_처리(546-1, ..., 546-N)블록에게 전달된다(813). 다음에 상기 PAUSE_처리(546-1, ..., 546-N)블록은 상기 PAUSE_info의 PAUSE_timer정보가 0인지 검사하여(814), PAUSE_timer정보가 0 인 경우에는 PAUSE_수효(PN)감소/해당포트_정상동작_환원단계로 진행하고(820), 상기 PAUSE_timer정보가 0이 아닌 경우에는 PAUSE_port를 검사한다(815). 상기 단계(815)의 PAUSE_port 검사 과정에서는 해당되는 출력_버퍼(546-1, ..., 546-N)의 상태가 PAUSE 상태인지를 검사한다. 상기 검사결과 이미 PAUSE 중인 경우에는 PAUSE_timer_set단계(817)로 진행하여 PAUSE_timer를 셋팅하고, PAUSE 상태가 아닌 경우에는 PAUSE_수효(PN)를 증가시킨 후(816) 상기 PAUSE_timer_set단계(817)로 진행한다. 여기서, 상기 PAUSE_수효(PN)증가단계(816)에서는 현재 PAUSE중인 출력_버퍼수효(PAUSE frame Number: PN)를 1만큼 증가시키며, 또한 상기 PAUSE_time_set단계(817)에서는 해당되는 출력_버퍼의 PAUSE timer의 값을 상기 PAUSE_info의 PAUSEtimer 값으로 설정한다. 이때, 상기 단계(816)에서 상기 증가된 PAUSE_수효(PN)는 도 8(b)의 840단계에 도시된 바와 같이 설정값과 비교되어(840), 10기가 이더넷 PAUSE_프레임 생성/송출여부를 결정한다(841). 이에 관하여서는 하기에서 도 8(b)를 참조하여 다시 설명하기로 한다.
계속하여, PAUSE_timer를 동작시켜 일정 시간마다 PAUSE timer의 값을 감소시키고(818) PAUSE종료검사를 수행한다(819). 상기 PAUSE종료검사단계(819)에서 상기 PAUSE timer의 값이 0이 아닌 경우에는 상기 PAUSE_timer_동작단계(818)로 다시 진행되고, PAUSE timer의 값이 0인 경우에는 PAUSE_수효(PN)감소/해당포트_정상동작_환원단계로 진행한다(819). 여기서, 상기한 PAUSE_수효(PN)감소/해당포트_정상동작_환원(819)단계는 현재 PAUSE중인 출력_버퍼수효(PN)를 1만큼 감소한 후에, 해당 포트의 상태를 PAUSE가 아닌 정상 동작(821)상태가 되도록 하게 된다.
다음으로 도 8(b)를 참조하면, 도 5의 XGMII(502)을 통하여 들어오는 10 기가비트 이더넷 프레임을 수신하면(831), 버퍼_변환(531)블록으로 들어온 프레임이 PAUSE 프레임인지의 여부를 PAUSE_검출(537)블록이 검사한다(832). 상기 검사결과 상기 수신된 10기가비트 이더넷 프레임이 PAUSE 프레임이 아닌 경우에는 정상동작 과정으로 진행하여 통상적인 10 기가비트 이더넷 프레임을 처리하는 과정을 수행하고, PAUSE_검출(537)블록은 버퍼_변환(531)블록이 다음 번의 프레임 수신 완료 시기까지 대기한다(839). 그러나, 상기 검사결과 상기 수신된 10기기비트 이더넷 프레임이 PAUSE 프레임인 경우에는 PAUSE_처리(546-1, ..., 546-N)블록들에게 기가이더넷 PAUSE_frame을 생성/송출함(842)과 동시에 도 5의 PAUSE_처리(527)블록이 동작한다. 여기서, 상기 기가이더넷 PAUSE_frame 생성/송출단계(842)는 상기 전달된 PAUSE frame정보에 의하여 기가비트 이더넷 PAUSE 프레임을 생성하고 GMII(504)를 통하여 송출한다. 이하에서는 상기한 PAUSE_처리(527)블럭의 동작을 설명한다.
PAUSE정보(PAUSE 시간 등)가 전달되면(834) PAUSE timer정보가 0인지를 검사한다(835). 상기 검사결과 상기 PAUSE_info(814)의 timer정보가 0 인 경우에는 정상동작단계(839)로 진행하고, 상기 PAUSE_timer정보가 0 이 아닌 경우에는 PAUSE_time_set단계(836)로 진행하여 선택_변환(522)블록의 PAUSE timer의 값을 PAUSE_info(833)의 PAUSE time값으로 설정하고 PAUSE_timer_동작(837)단계로 간다. 상기 PAUSE_timer_동작단계(837)에서는 일정 시간마다 PAUSE timer의 값을 감소시킨다. 이어, PAUSE종료검사를 수행하여(838) PAUSE timer의 값이 0이 아닌 경우에는 다시 상기 PAUSE_timer_동작단계(837)로 진행하고, PAUSE timer의 값이 0인 경우에는 상기 정상동작단계(839)로 진행한다.
한편, 도 8(a)에서의 816단계에서 증가된 PAUSE_수효(PN)가 설정값보다 큰지 검사하여(840), 크다면 10기가비트 이더넷 PAUSE_프레임을 생성/송출한 후(841) 다시 도 8(a)의 진행에 따라 상기 816단계에서 증가된 PAUSE_수효(PN)가 상기 설정값보다 큰지 계속해서 검사한다. 그러나, 상기 검사결과 PAUSE_수효(PN)가 상기 설정값보다 크지 않다면 정상동작단계(839)로 진행한다. 상기 단계(840)의 경우 도 8에 도시된 바와 같이 본 발명에 따른 프레임 다중화/역다중화기의 PAUSE 제어과정이 진행되는 동안 PAUSE_수효(PN)가 증가되는대로 이를 설정값과 비교하게 된다. 상기단계(840)를 보다 구체적으로 설명하면, 현재 PAUSE 상태인 출력_버퍼(546-1, ..., 546-N)의 수효가 어떤 설정된 기준값보다 큰지 일정 시간마다 검사하는 단계로서, 기준 값보다 작은 경우에는 선택_변환(527)블록은 기존의 동작을 계속하는 정상동작(839) 상태가 되며, 기준값을 넘어서는 경우에는 10기가_이더넷PAUSE_frame생성/송출을 수행한다(841). 상기 10기가_이더넷PAUSE_frame생성/송출단계(841)에서는 선택_변환(522)블록이 기존의 10기가 이더넷 프레임을 전송한 직후에 PAUSE 프레임을 생성하여 XGMII(501)을 통하여 생성된 PAUSE프레임을 송출한다.
도 9는 본 발명에 따른 다중화기 상세 구성블록도이다. 도 9에서 GMII(902), XGMII(901)는 도 5의 GMII(503), XGMII(501)와 동일한 인터페이스이다. 또한 도 9에서 프레임_다중화기(Frame_MUX)(520-1) 내부의 입력_버퍼(input_buffer)(910-1)블록, 선택_변환(select_convert)(920)블록, 선택_제어(select_control)(930)블록, 다중화부_상태모니터(MUX_STA)(980)블록, PAUSE_detect(916), SA_in(940)은 각각 도 5의 프레임_다중화기(Frame_MUX)(520-1) 내부의 입력_버퍼(input_buffer)(521-1)블록, 선택_변환(select_convert)(522)블록, 선택_제어(select_control)(523)블록, 다중화부_상태모니터(MUX_STA)(528)블록, PAUSE_detect(521-1), SA_in(524)과 동일한 기능 블록이다. 따라서 Frame_MUX(900-1)은 도 5의 Frame_MUX(520-1)과 동일하다.
도 9에서 입력_버퍼(input_buffer)(910-1)블록은 GMII(902)의 GTX_CLK 및 TxD<7:0>과 연결된 데이터_입력(data_in)(911)블록, GMII(902)의 GTX_CLK 및 Tx_ER과 연결된 에러_입력(error_in)(912)블록, GMII(902)의 Tx_EN과 연결된 인에이블_입력(enable_in)(913)블록, 도 6에 도시된 PAUSE_process(666)와 연결된 PAUSE_detect(916), 포트_선택_제어(xmit_port_select_control)(933)블록과 연결된 시작_종료_처리(SOF_EOF_process)(918)블록으로 구성된다. 또한 입력버퍼(910-2, ..., 910-N)블록의 내부 구성블록과 연결은 모두 입력_버퍼(910-1)블록과 같다. 선택_변환(select_convert)(920)블록은 포트_선택_제어(xmit_port_select_control) (933)블록 및 입력_버퍼(input_buffer)(910-1, ..., 910-N)블록들과 연결된 포트_선택_저장(port_select_store)(933)블록, 도 6에 도시된 PAUSE_detect(616)과 연결된 PAUSE_process(926), IFG_삽입(923)블록, XGMII(901)의 TxD<31:0> 및 TXC<3:0>과 연결된 변환_레인_생성(convert_lane_generation)블록, XGMII(901)의 TX_CLK와 연결된 송신_클럭_생성(TX_CLK_generation)(924)블록으로 구성된다. 그리고, 선택_제어(select_control)(930)블록은 시작_종료_처리(SOF_EOF_process)(918)블록들과 연결된 포트_선택_제어(port_select_control)(933)블록, 변환_레인_생성(convert_lane_generation)블록과 연결된 송신_상태(xmit_status)(931)블록, SA_in(940)과 연결된 송신_처리(xmit_process)블록으로 구성된다. 다중화기_상태모니터(MUX_STA)(980)블록은 상태정보를 GMII 및 XGMII를 통하여 출력한다.
앞에서 기술한 바와 같이 기가비트 이더넷 프레임은 GMII(902)를 통하여 TxD<7:0>, Tx_ER, TxEN 정보와 함께 clock 신호인 125MHz의 GTX_CLK 신호가 들어온다. 인에이블_입력(enable_in)(913)블록은 GMII(902)를 통하여 들어오는 Tx_EN 상태 정보를 GTX_CLK 신호와 동기가 되어 저장하는 버퍼로서 데이터_입력(data_in)(911)블록, 에러_입력(error_in)(912)블록 및 시작_종료_처리(SOF_EOF_process)(918)에 Tx_EN 정보를 전달한다. 데이터_입력(data_in)(911)블록, 오류_입력(error_in)(912)블록은 GMII(902)를 통하여 들어오는 TxD<7:0>, Tx_ER 정보를 각각 저장하는 라운드 로빈(round robin) 형태의 버퍼로서 Tx_EN 정보가 Low에서 High로 변화하면 GTX_CLK 신호에 동기가 되어 TxD<7:0>, Tx_ER 정보를 각각 저장하기 시작하고 또한 High에서 Low로 변화하면 프레임 종료를 인식하고 TxD<7:0>, Tx_ER 정보의 저장을 종료한다. 이와 같이 데이터_입력(data_in)(911)블록과 에러_입력(error_in)(912)블록은 GMII(902)를 통하여 제공되는 GTX_CLK와 동기가 되어 동작하므로 데이터_입력(data_in)(911)블록의 주소만 알면 오류_입력(error_in)(912)블록의 주소를 모두 알 수 있다. TxEN이 Low에서 High로 변화하여 데이터_입력(data_in)(911)블록이 TxD<7:0>를 저장하기 시작한 버퍼의 주소는 SOF(Start Of Frame), TxEN이 Low에서 High로 변화하여 데이터_입력(data_in)(911)블록이 TxD<7:0>를 저장을 종료한 버퍼의 주소는 EOF(End Of Frame)이 되고 여러 개의 프레임 정보가 데이터_입력(911)에 계속 남아있는 경우에는 이러한 SOF, EOF 들이 여러 개 있을 수 있다.
따라서 인에이블_입력(enable_in)(913)블록의 출력이 Low 상태에 있다가 High로 변화한 시점에서 시작_종료_처리(SOF_EOF_process)(918)블록은 데이터_입력(data_in)(911)블록이 데이터를 저장하기 시작하는 버퍼 주소(즉, SOF)를 임시로 저장하였다가, SOF, 인에이블_입력(enable_in)(913)블록의 출력이 Low로 변화한 시점에서 데이터 버퍼(Data Buffer)(911)가 데이터 저장을 종료한 버퍼의 주소(즉 EOF), 그리고 현재 수신 완료된 프레임으로부터 SA, 프레임의 FCS(checksum) 및 입력_버퍼(input_buffer)(910-1)의 번호를 포트_선택_제어(port_select_control)(933)블록에게 전달한다. 또한, 포트_선택_저장(port_select_store)(921)블록은 포트_선택_제어(port_select_control)(933)블록으로부터 전달된 정보에 의하여 입력_버퍼(input_buffer)(910-1, ,,,, 910-N)블록들 중에서 특정 입력_버퍼를 선택하여 시작_종료_처리(SOF_EOF_ process)(918)블록 또는 송신_처리(xmit_process)(932)블록에 저장된 SOF 주소와 EOF 주소를 사용하여 데이터_입력(Data_in)(911)블록, 에러_입력(error_in)(912)블록의 내용을 변환_레인_생성(convert_lane_generatr)(922)블록에게 전달한다.
한편, 도 9의 송신_클럭_생성(TX_CLK_generation)(924)블록은 156.25 MHz 클럭(clock) 신호를 생성하여 IFG_삽입(IFG_insertion)(923)블록과, 변환_레인_생성(convert_lane_generator)(922) 및 XGMII(901)에 TX_CLK 신호를 공급한다. 또한, 변환_레인_생성(convert_lane_generator)(922)블록은 포트_선택_저장(port_select_store)(921)블록이 읽어 들인 내용 중에서 데이터_입력(data_in)(911)블록의 내용인 TxD<7:0>의 내용을 XGMII 규격인 TxD<31:0>의 4-레인(lane) 데이터로 변환한다.
즉, Tx_EN의 시작 시점은 프리앰블(preamble)신호 중에서 첫번째 바이트 신호이며 이 신호를 TxD<32:0>중에서 첫번째 레인(lane)인 TxD<7:0>에 시작(Start)신호로 대체한다. 다음에 이어지는 6 바이트의 프리앰블(preamble)신호는 순서대로 레인1(lane1), 레인2(lane2), 레인3(lane3)인 TxD<15:8>, TxD<23:16>, TxD<31:24>에 옮긴다. 다음에는 다시 레인0(lane0), 레인1(lane1), 레인2(lane2)인 TxD<7:0>, TxD<15:8>, TxD<23:16>에 프리앰블(preamble) 신호를 옮긴 다음, SFD 정보를 레인3(lane3)인 TxD<31:24>에 옮긴다.
다음부터는 lane0에서부터 시작하여 lane1, lane2, lane3의 순서대로 라운드 로빈(round robin)방식으로 Tx_EN이 High에서 Low로 변할 때까지 옮긴 후에 다음 lane에는 종료(terminate) 신호(즉 0xFD)를 삽입하고, 해당되는 TXC<3:0>의 값을 생성한다(즉 lane2에 종료(terminate)신호를 삽입하는 경우에는 TXC<3:0>중에서 3번째 비트가 High이므로 TXC<3:0>의 값은 0x6 가 된다).
이와 같이 8 비트의 TxD<7:0>를 32 비트의 TxD<31:0>로의 병렬 데이터 변환하고 TXC<3:0> 정보를 생성하여 송신_클럭_생성(TX_CLK_generation)(924)블록이 생성한 TX_CLK을 사용하여 XGMII(901)으로 출력시킨다. 또한 더 이상 출력할 데이터가 없는 lane들은 유휴 신호(즉 0x07)값을 넣으며, 해당되는 lane의 상태를 나타내는 TXC의 비트를 High로 변경시켜 TxD<31:0>, TXC<3:0>을 TX_CLK 클럭을 사용하여 XGMII(901)으로 출력시킨다. 예를 들어 모든 lane에 유휴 신호 값을 넣는 경우에는 TXC의 모든 비트가 high이므로 TXC<3:0>의 값은 0xF가 된다.
IFG_삽입(IFG_insertion)(923)블록은 포트_선택_저장(port_select_store) (921)블록이 선택한 특정 입력_버퍼(input_buffer)(예: 910-1)로부터 가져온 프레임의 FCS를 전송한 직후에 인터프레임 갭(IFG)을 삽입하여 XGMII(901)으로 출력시킨다.
이러한 과정에서 GMII의 Tx_ER 정보는 하기와 처리한다. 정상적인 MAC 프레임 내의 데이터 에러는 TX_EN의 High 동안에 Tx_ER이 High로 변화한다. 따라서 이 기간 동안의 TxD<7:0>를 XGMII의 TxD<32:0>로 변환하는 과정에서 Tx_ER에 해당하는 GMII의 TxD<7:0>가 속할 XGMII의 lane 값에 에러 값(즉, 0xFE)을 넣고, TXC<3:0>중에서 그 lane에 해당하는 비트를 High로 하여 전송한다. 만약에 해당하는 lane이 0인 경우에는 GMII의 TxD<7:0>에 0xFE값, TXC<3:0>은 0x1로 변환하여 XGMII로 출력시킨다. TX_EN이 Low 상태에서는 Tx_ER 의 High 및 Low와 관계없이 XGMII의 유휴(idle)신호 값인 0x07 값으로 변환하여 XGMII로 출력시킨다.
또한 위와 같이 변환_레인_생성(convert_lane_generator)(922)블록이 포트_선택_저장(port_select_store)(921)블록에 저장된 GMII의 TxD<7:0>와 IFG_삽입(IFG_insertion)(923)블록의 인터프레임 갭(IFG)을 XGMII(901)으로 출력시키는 동안과 PAUSE_process(926)의 처리에 의한 송신중지 시간동안에는 상태 신호(status signal)(925)는 High 상태이고 그 이외의 시간에는 Low를 유지하며, 이 신호를 선택_제어(select_control)(930)블록 안의 송신_상태(xmit_status)(931)블록에 전달한다. 그러면 송신_상태(xmit_status)(931)블록은 이 값을 포트_선택_제어(port_select_control)(933)블록에게 전달한다.
또한 SA_in(940)블록은 다른 프레임_역다중화기(Frame_DEMUX)(600-2, ..., 600-m)의 SA_out(650)블록들로부터 전달되는 SA, FCS 및 Frame_DEMUX 번호로 구성된 터너리(ternary) 정보를 받아서 송신_처리(xmit_process)(932)에게 전달한다.이와 같은 터너리 정보를 받는 과정에서 다수의 SA_in(932)와 SA_out(535)들이 common bus로 연결된 경우에는 자신의 Drame_DEMUX에 해당하는 정보만을 받도록 address filtering 기법을 사용하여 구현을 할 수도 있다. 송신_처리(xmit_process)(932)블록은 SA_in(940)을 통하여 얻은 정보에 의하여 Frame_MUX(900-1)의 모든 입력_버퍼(910-1, ..., 910-N)로 들어오는 다른 프레임_역다중화기(Frame_DEMUX)의 프레임 정보인 SA(Source Address)와 FCS(checksum) 정보를 후술하는 도 11의 SAT(1120) 및 SA_sequence_table(1110-1, 1110-p)와 같은 테이블 형태의 정보를 지니고 있으므로, 이 정보로서 포트_선택_제어(port_select_control)(933)블록에서 특정 입력_버퍼를 선택할 때 우선 순위 결정에 사용하고, 요구에 의하여 포트_선택_제어(port_select_control)(933)블록에게 전달한다.
포트_선택_제어(port_select_control)(933)블록은 도 10의 입력_버퍼 블록 번호(IB_N)(1021), SOFA(1022), EOFA(1023)로 이루어진 레지스터 터너리(ternary: 3개 1조)들로 구성된 라운드 로빈(round robin) 형태의 버퍼 테이블 (LAT)(1026)과 현재 처리 대기 중인 레지스터 터너리(ternary)의 수효를 나타내는 값(Tnm)(1025), 또한 현재 처리 대기중인 레지스터 터너리(ternary)들 중에서 가장 오래된 레지스터 터너리(ternary)을 지시하는 포인터(pointer)(Xtm)(1024)로 구성된 내부 테이블을 지니고 있다. 따라서 복수의 입력_버퍼(910-1, ..., 910-N)블록에 내장된 시작_종료_처리(SOF_EOF_process)(918)블록이 현재 수신 완료한 프레임의 SA, FCS, SOF, EOF 및 입력_버퍼블록 번호 정보를 보내 오면, 그 프레임의 출발점이 도 4에서의프레임_역다중화기(430-1, ..., 430-m)인지 GbE PHY(470-1, ..., 470-k)인지 구분을 요청한 다음에, 송신_처리(xmit_process)(932)블록으로부터 결과를 통보 받아 수신 완료한 프레임이 다른 Frame_DEMUX로부터 전송된 프레임이 아닌 경우에만 현재 대기중인 레지스터 터너리(ternary)의 수효를 나타내는 레지스터의 값을 1 만큼 증가하고, 현재 수신완료한 프레임의 입력_버퍼 번호(IB_N), SOF 및 EOF를 각각 IN_N(1021), SOFA(1022) 및 EOFC(1023)에 추가한다.
또한, 포트_선택_제어(port_select_control)(933)블록은 송신_상태(xmit_ status)(931)블록의 출력이 High 에서 Low로 변화하면 먼저 송신_처리(xmit_process)(932)블록에 내장된 도 10의 XA-n(1132) 의 값이 0이 아닌 경우 XA_pool(1130), SAT(1120) 및 SA_sequence_table(출발지_순서_테이블)(1110-1, ..., 1110-p)의 작용으로 다른 Frame_DEMUX에서 전송한 이더넷 프레임이 저장된 특정 입력_버퍼(910-1, ..., 910-N중의 하나)와 그 프레임이 저장된 데이터_입력(data_in)(911)블록의 버퍼 주소를 지정하는 SOF, EOF 정보를 추출하여 포트_선택_저장(port_select_store)(921)블록으로 전달한다. 그리고 송신_처리(xmit_process)(932)블록에 내장된 도 10의 XA-n(1132) 의 값이 0인 경우에는 Tnm(1025)의 값을 가져온다. Tnm(1025)의 값은 현재 처리 대기 중인 레지스터 터너리(ternary)의 수효를 나타내는 값이 1 이상인 경우에 한하여, Xtm(1024)가 가리키는 지역_주소_테이블(LAT)(1026)의 터너리(ternary) 정보인 입력_버퍼 번호, SOF 및 EOF 정보를 포트_선택_저장(port_select_store)(921)블록으로 전달하고, Xtm(1024)는 그 다음의 터너리를 가리키도록 지정하고 Tnm(1025)의 값을 1 만큼 감소시킨다. 그리고, 위의 과정에서 XA-n(1132)와 Tnm(1025)의 값이 모두 0 일 경우에는 시작_종료_처리(SOF_EOF_process)(918)블록이 SA, FCS, SOF, EOF 및 입력_버퍼블록 번호 정보를 전달할 때까지 대기한다.
도 10은 포트_선택_제어(port_select_control)(933)블록이 사용하는 내부 테이블 구조를 나타낸 도면이다. 여기서 도 10의 데이터_입력(Data_in)(1010)블록과 도 9에 도시된 데이터_입력(data_in)(911)블록은 동일하며, 또한, 도 10에 도시된 포트_선택_제어(port_select_control) (1020)블록과 도 9에 도시된 포트_선택_제어(port_select_control)(933)블록도 동일하다.
도 10의 데이터_입력(Data_in)(1010)블록은 라운드 로빈(round robin) 형태의 버퍼(buffer)를 옆으로 펼쳐서 나타낸 그림이며, 이 경우에 오른쪽이 최근이며, t-now(1011)은 현재 시점을 나타낸다. 앞에서 기술한 바와 같이 LAT(1026)은 라운드 로빈(round robin) 형태의 터너리(ternary) 테이블을 상하로 펼쳐 놓은 모습이며, 입력_버퍼 번호(IB_N)(1021), SOFA(1022) 및 EOFA(1023)은 프레임 수신 완료한 입력_버퍼 블록 번호, 데이터_입력(data_in)(1010)에 저장된 프레임 시작주소를 나타내는 SOF 정보 및 데이터_입력(data_in)(1010)블록에 저장된 프레임 종료주소를 나타내는 EOF 정보를 저장한다. 또한 Tnm(1025)는 현재 시점에서 처리대기중인 터너리(ternary) 수효를 나타내고 Xtm(1024)는 대기중인 터너리(ternary) 중에서 가장 오래된 터너리를 지시하는 포인터(pointer)를 가진다.
도 10에 도시된 time(1015)는 시간의 흐름을 나타내는 것으로서,T=time1(1011), T=time2(1012) 및 T=time3(1013)은 시간 축에서 포트_선택_제어(port_select_control)(1020)블록의 동작 상태를 구분하기 위한 것이며, 오른쪽으로 갈수록 최근의 시각을 나타낸다. 따라서 데이터_입력(1010)블록에 프레임이 없는 초기상태에서는 LAT(1026)의 내부는 모두 비어있는 상태이고, Xtm(1024)는 LAT(1026)의 어떤 터너리를 지시하고 있지만 Tnm(1025)의 값은 0이다. 데이터_입력(data_in)(1020)에 프레임을 받은 시점인 T=time(1011)에서 시작_종료_처리(SOF_EOF_process)(918)블록이 SOF, EOF 및 입력_버퍼 번호 정보를 보내오면, 그 프레임(Ethernet Frame-1)이 포트_선택_제어(port_select_control)(1020)블록이 송신_처리(xmit_process)(932)블록의 응답에 의하여 다른 Frame_DEMUX로부터 전송된 프레임이 아니라고 판단되면 데이터_입력(data_in)(1010)블록에 저장된 프레임(Etheret Frame-1)의 종료주소(EOF-11)를 Xtm(1024)의 포인터값과 Tnm(1025)의 값을 더한 포인터가 가리키는 EOFA(1023)에 저장하고 대응되는 터너리의 IB_N(1021)에 상기 프레임을 저장한 입력_버퍼의 번호를 저장한다. 따라서 T=time1에서 Tnm(1025)의 값은 0이므로 EOF-11과 timer는 그림에서와 같이 실제는 Xtm(1024)이 지시하는 터너리에 들어가며, 다음에는 Tnm(1025)의 값을 1만큼 증가시킨다. 시간의 경과에 따라 T=time2(1012) 및 T=time3(1013) 시점에서 수신 완료한 이더넷 프레임인 Ethernet Frame-2 및 Ethernet Frame-3은 송신_처리(xmit_process)(932)블록의 응답에 의하여 다른 Frame_DEMUX로부터 전송된 프레임이라고 판단되어 포트_선택_제어(port_select_control)(1020)블록이 내부 테이블인 LAT(1026)의 IB_N(1021), SOFA(1022), EOFA(1023) 그리고 Xtm(1024),Tnm(1025)을 사용하지 않는 결과이다. 가장 최근의 시점인 T=time4(1014) 시점은 Ethernet Frame-4가 데이터_입력(1010)에 저장되기 시작하는 것을 시작_종료_처리(SOF_EOF_process)(918)블록이 감지한 시점이므로 이 때에는 프레임의 시작주소인 SOF-14를 시작_종료_처리(SOF_EOF_process)(918)블록의 내부에 임시 저장된 상태이다.
도 11은 송신_처리(xmit_process)(1100)블록이 사용하는 내부 테이블의 구성과 동작을 나타낸 것으로서, 송신_처리(xmit_process)(1100)블록은 도 9에서의 송신_처리(xmit_process)(932)블록과 동일하다. 도 11에서 XA_pool(1130)블록은 라운드 로빈(round robin) 형태의 버퍼를 상하로 펼쳐서 나타낸 그림이며 아래쪽이 나중에 저장한 것이다. XA-p(1131)은 XA_pool(1130)에 들어있는 정보들 중에서 가장 오래된 정보를 가리키고 있으며, 따라서 도 11에서 XA-p(1131)은 XA_pool(1130)의 XA-2p를 가리킨다. 또한 XA-n(1132)는 XA_pool(1130)에 있는 정보 수효를 나타내므로 이 경우에는 값은 2 이다. 그리고 SAT(1120)은 SAG(1121), xgb(1122) 및 gbn(1123)로 이루어진 터너리(ternary) 형태의 테이블 버퍼이다. 마지막으로 SA_address_tabe(1110-1, ..., 1110-p)블록들은 FCSS(1111), SOFS(1112), EOFS(1113) 및 IN_B(1114)로 이루어진 쿼드러플릿(quadruplet; 4개 1조)형태의 라운드 로빈(round robin) 테이블로써 상하로 펼쳐놓은 모습이다. 이러한 SA_address_tabe(1110-1, ..., 1110-p)블록의 수효는 SAG(1121)에 들어있는 정보 수효(SA-1, ..., SA-p 이므로 p 개)만큼 존재한다. 또한 xgb(1122)의 내용은 각각 SA_sequence_table(1110-1, ..., 1110-p)의 FCSS(1111)에 있는 첫 번째 쿼드러플릿을 가리키고 있으며, gbn(1123)의 내용은 SA_sequence_table(1110-1, ..., 1110-p)안에 있는 FCSS(1111)의 수효를 나타낸다. 따라서 xgb-1은 SA_sequence_table(1110-1)의 FCS11을 가리키고 있고 gbn-1의 값은 4 이며, xgb-p은 SA_sequence_table(1110-p)의 FCSp1을 가리키고 있고 gbn-p의 값은 3 이다.
동작의 초기 상태에서는 XA_pool(1130), SAT(1120)은 비어 있고 XA-n(1132)의 값은 0 이다. 또한 SAT(1120)도 비어 있으므로 SA_sequence_table(1110-1, ..., 1110-p)은 존재하지 않은 상태이다. 먼저 SA_in(940)블록으로부터 SA, FCS 정보를 받은 송신_처리(xmit_process)(1100)블록은 SA가 SAG(1121)안에 있는지를 검사하여 없는 경우에는 새로운 SA_sequence_table(도 11의 경우에는 이미 p 개 존재하므로 1110-p + 1을 형성하지만 초기상태이므로 1110-1)을 형성한 다음에 SA를 SAG(1121)에 추가하고 대응되는 xgb(1122)에는 을 새로 형성한 SA_sequence_table의 FCSS(1111)의 처음 위치를 가리키도록 하고 FCSS(1111)에는 FCS를 저장하며 대응되는 SOFS(1112), EOFS(1113), IB_N(1114)은 비어있는 상태로 두고, 또한 대응되는 gbn(1123)의 값은 1 (즉, gbn-1의 값 = 1)로 한다. 따라서 처음으로 SA가 들어 온 경우에 SAT 내부에는 1개 터너리(ternary;3개 1조)(SA-1, xgb-1, gbn-1)가 들어 있다. 계속해서 SA_in(940)블록이 동일한 SA(즉, SA-1), FCS정보를 전달하면 그 SAG와 같은 터너리에 있는 xgb(1122)가 가리키는 SA-address_table의 FCSS(1111)에 SA_in(940)블록으로부터 받은 FCS를 추가한다. 도 11에서 SA_sequence_table(1110-1)의 FCSS(1111)에 있는 FCS11, FCS12, FCS13, FCS14의 의미는 SA_in(940)으로부터 FCS 값만 다르고 동일한 SA를 지닌 정보를 FCS11, FCS12, FCS13, FCS14의 순서대로 수신하여 기록한 상태임을 나타낸다. 따라서 이 경우의 xgb-1의 값은 FCS11을 가리키고 있으나 gbn-1의 값은 새로운 FCS를 받을 때마다 증가하여 4 이다. 그리고 SA_in(940)블록이 SAT(1120)에 없는 새로운 SA, FCS 정보를 전달하면 앞에서 기술된 바와 같은 방법으로 새로운 SA_sequence_table을 형성하게 된다. 그러므로 도 11에서는 SAT(1120)안에 서로 다른 SA인 SA-1, ..., SA-p가 있고 p 개의 SA_sequence_table(1110-1), ..., SA_sequence_table(1110-p)가 생성된 이후, SA-in(940)블록으로부터 SA-1의 경우 4개의 서로 다른 FCS를 받았고, ..., SA-p 의 경우 서로 다른 3개의 FCS를 전달받았음을 의미한다.
위와 같이 SAT 터너리와 SAT_address_table을 생성하고 추가하는 동안에 도 9에 도시된 포트_선택_제어(port_select_control)(933)블록을 통하여 시작_종료_처리(SOF_EOF_process)(918)블록으로부터 SA, FCS, SOF, EOF, 입력_버퍼(input_buffer)(910)의 번호를 전달받으면 상기 전달받은 SA가 SAG(1121)안에 있는 SA-1, ..., SA-p 중의 하나인지 알아내어 그 결과를 다시 포트_선택_제어(port_select_control)(933)블록을 통해 시작_종료_처리(SOF_EOF_process)(918)블록에게 전달한 다음에 상기 SAG(1121) 안에 들어 있지 않은 SA 이면 더 이상의 작용을 하지 않으나, SAG에 들어 있는 SA중의 하나인 경우에는 그 SA가 속한 터너리 중의 xgb(1122)를 찾아내어 해당하는 SA_sequence_table의 FCSS(1111)을 검색하여 시작_종료_처리(SOF_EOF_process)(918)블록이 보낸 FCS에 속한 쿼드러플릿(quadruplet)의 SOFS(1112), EOFS(1113), IB_N(1114)에 SOF, EOF, 입력_버퍼 번호를 각각 저장하며, 이러한 과정에서 FCSS(1111)의 위치가 xgb(1122)가 가리키는 주소와 같은 경우에는 XA-p(1131)의 포인터 값과 XA-n(1132)의 값을 합친 위치의 XA_pool(1130)에 FCSS(1111)의 위치 주소를 추가한 다음에 XA-n(1132)의 값을 1 만큼 증가한다. 도 11의 예로써 SA_sequence_table(1110-1)은 시작_종료_처리(SOF_EOF_process) (918)블록이 SA=SA-1, FCS=SOF-12, EOF=EOF-12, 입력_버퍼 번호=IB-1 인 경우와 SA=SA-1, FCS=SOF-32, EOF=EOF-32, 입력_버퍼 번호=IB-3 을 각각 보낸 결과이며, 이러한 과정에서 SA_sequence_table(1110-p)의 경우에는 FCSp1이 속한 쿼드러플릿(quadruplet)에 SOF-13, EOF-13, IB-1을 저장하므로 XA_pool(1130)에 FCSp1의 위치 주소를 추가하며, 이 때 도 11과 같이 XA_pool(1130)에 이미 XA-2p, XA-4p 가 있을 경우에는 XA-4p 다음에 넣는다.
그리고 송신_처리(xmit_process)(932)블록이 송신_상태(xmit_status)(931)블록으로부터 포트_선택_제어(port_select_control)(933)블록을 통하여 송신 완료 신호를 받으면 XA-n(932)의 값을 검사하여 0 인 경우에는 송신할 데이터가 없다는 정보를 보내고(예로써 앞서 기술된 바와 같이 되돌려줄 입력_버퍼 번호에 단순히 null 값을 송출), 1 이상인 경우에는 XA-p(1131)이 가리키는 XA_pool(1130)의 정보에 저장된 쿼드러플릿(quadruplet) 위치 정보에 의하여 FCSS(1111), SOFS(1112), EOFS(1113), IB_N(1114)의 값을 포트_선택_제어(port_select_control)(933)블록에게 전달하고, 동시에 XA-n(1132)의 값을 1 만큼 감소하고, XA-p(1131)의 포인터를 1 만큼 증가한 다음에는 해당하는 gbn(1123)의 값을 1만큼 감소시켜 0이 되었을 경우에는 SAT(1120)에 있던 SAG(1121), xgb(1122) 및 gbn(1123) 터너리를 삭제하고, SA_sequence_table도 삭제한다. 해당하는 xgb(1122)의 포인터를 증가시켜FCSS(1111)의 다음 번 entry를 가리키도록 한다. 예로써 도 11에서 FCSp1 이 XA-pool(1130)의 XA-2p 이었다면 XA-p(1131)은 XA-4p를 지정하는 포인터 값이 되고, gbn-p의 값은 2 가 되며 xgb(1122)의 xgb-p는 SA_sequence_table(1110-p)의 FCSp2를 가리키는 값이 된다. 또한 도 11에서 FCSp3 이 XA-pool(1130)의 XA-2p 이었다면 XA-p(1131)은 XA-4p를 지정하는 포인터 값이 되고, gbn-p의 값은 0 가 되므로 이 경우에는 SA-p, xgb-p, gbn-p 인 터너리(ternary)가 SAT(1120)에서 삭제되고 또한 SA_sequence_table(1110-p)도 삭제된다.
마지막으로 SA_sequence_table(1110-1, ..., 1110-p)를 생성 기법으로 초기 상태에서 일정한 크기의 SA_address_tabe(1110-1, ..., 1110-p)를 미리 생성하고 그러한 테이블 정보를 저장한 pool을 두어서 필요할 때마다 pool에서 사용 가능한 임의의 SA_sequence_table을 가져와서 사용하는 방법도 있을 수 있으나 이러한 기법은 구현상의 차이에 지나지 않는다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 디지털 컴퓨터에서 구현될 수 있다. 또한 상술한 본 발명의 실시예에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 반도체 저장매체(예를 들면, 롬, RAM, NVRAM, CAM 등), 마그네틱 저장매체(예를 들면, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 씨디롬, 디브이디 등) 및 캐리어웨이브(예를 들면, 인터넷을 통한 전송)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 제시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
상술한 바와 같이 본 발명은, 가변 길이의 고속 프레임을 단순한 시분할 다중화(TDM) 방식이 아닌 프레임 다중화(frame multiplexing) 방식을 사용하고, 출력 대역폭(output bandwidth)보다 입력 대역폭(input bandwidth)을 크게 함으로써 통계적 다중화(statistical multiplex) 효과를 지니며, 또한 입력과 출력 인터페이스 방식에 표준 인터페이스를 사용함으로써 범용성을 추구하는 효과가 있을 뿐만 아니라 저속(기가비트급)의 스위치 칩셋을 사용하여 고속(10기가비트급) 출력을 얻는 이더넷 스위치의 구현이 가능한 장점이 있다.
또한, 기가비트 이더넷 MAC 블록과 10기가비트 이더넷 트랜시버 사이에 IEEE 802.3 표준 인터페이스인 GMII 및 XGMII를 사용함으로써 범용의 칩을 사용할 수 있을 뿐만 아니라, 가변 길이의 이더넷 프레임을 프로토콜 변경 없이 그대로 다중화 및 역다중화하여 전송할 수 있는 장점이 있으며, 패킷분류(packet classification)나 트래픽 관리(traffic management) 등의 코프로세서(co-processor)와 같은 고가의 복잡한 기능 블록을 사용하지 않고도 10기가 이더넷 프레임을 생성 전송할 수 있는 장점이 있다.
특히, 이더넷 스위치를 구현하는데 있어서 스위치 칩셋 내부 연결 경로에 대한 정보 없이 IEEE802.3 표준 인터페이스인 GMII 및 XGMII의 사용만으로도 각 포트에서의 프레임 전달 순서를 올바르게 할 수 있으므로 보다 범용의 스위치 칩셋을 사용할 수 있는 이점이 있다.

Claims (39)

10기가비트 미디어 독립 인터페이스(XGMII)의 형식에 따라 입력되는 10기가비트 이더넷 프레임을 복수의 기가비트 미디어 독립 인터페이스(GMII) 형식의 기가비트 이더넷 프레임으로 변환시켜 출력하는 복수의 프레임 역다중화기;
기가비트 미디어 독립 인터페이스(GMII)의 형식에 따라 입력되는 복수의 기가비트 이더넷 프레임을 10기가비트 미디어 독립 인터페이스(XGMII)의 형식의 10기가비트 이더넷 프레임으로 변환시켜 출력하는 복수의 프레임 다중화기; 및
입력 및 출력 인터페이스가 상기 기가비트 미디어 독립 인터페이스(GMII)를 지니고, 상기 복수의 프레임 역다중화기 및 상기 복수의 프레임 다중화기와 GMII의 형식으로 접속되며, 상기 프레임 다중화기로 보내는 프레임인 경우에는 그 프레임 다중화기에 접속된 다수의 GMII 포트들 중에서 임의의 사용 가능한 포트로 출력하고, 상기 프레임 다중화기 및 상기 프레임 역다중화기와 접속된 상기 GMII는 전이중(Full Duplex)방식으로 설정된 스위치 패브릭 칩 셋; 을 포함하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 1항에 있어서,
상기 복수의 프레임 다중화기와 상기 복수의 프레임 역다중화기가 서로 대응되는 프레임 다중화기/역다중화기 쌍(pair)을 형성하고,
상기 각각의 프레임 역다중화기는,
10기가비트 미디어 독립 인터페이스(XGMII)의 형식에 따라 입력되는 10기가비트 프레임 데이터를 저장하고 기가비트 이더넷 매체접근제어 데이터로 변환시키며, PAUSE 프레임을 검출하는 버퍼_변환부;
상기 변환된 기가비트 이더넷 프레임의 수신상태, 도착지 및 상기 프레임을 출력할 포트를 분석하는 포트_분석_제어부;
상기 포트_분석_제어부에서 분석한 출력 포트를 선택하여 상기 버퍼_변환부에서 변환된 기가비트 이더넷 프레임을 상기 출력 포트로 전달하는 포트_선택부;
상기 포트_분석_제어부로부터 10기가비트 이더넷 프레임의 출발지 정보를 복수의 다른 프레임 다중화기/역다중화기 쌍(pair)에게 전달하는 출발지_출력부; 및
상기 포트 선택부에서 전달된 기가비트 이더넷 프레임을 저장하고 기가비트 미디어 독립 인터페이스(GMII)를 통하여 상기 기가비트 이더넷 프레임을 출력하며 상기 버퍼 변환부에서 검출한 PAUSE 프레임 정보를 받아 상기 해당 PAUSE 프레임을 처리하는 복수의 출력_버퍼부; 를 포함하고,
상기 각각의 프레임 다중화기는,
기가비트 미디어 독립 인터페이스(GMII)의 형식에 따라서 입력되는 기가비트 이더넷 프레임을 저장하며 PAUSE 프레임을 검출하여 상기 역다중화기의 대응되는 각 출력_버퍼부로 전달하는 복수의 입력_버퍼부;
상기 이더넷 프레임의 출발지 주소 정보를 수신하여 상기 복수의 입력_버퍼부 중에서 하나를 선택하도록 하는 제어신호를 발생시키는 선택_제어부;
상기 입력된 복수의 기가비트 이더넷 프레임 중에서 하나를 상기 선택_제어부의 제어신호에 의하여 순차적으로 선택하여 10기가비트 미디어 독립 인터페이스 데이터로 변환하고 상기 변환된 이더넷 프레임을 10기가비트 미디어 독립 인터페이스의 형식에 따라 출력하며, 상기 버퍼_변환부 및 상기 입력_버퍼부에서 검출한 PAUSE 프레임 정보를 수신하여 해당 PAUSE 프레임을 처리하는 선택_변환부; 및
상기 복수의 다른 프레임 다중화기/역다중화기 쌍(pair)이 전달한 10기가비트 이더넷 프레임의 출발지 정보를 상기 선택_제어부 및 상기 포트_분석_제어부에게 전달하는 출발지_입력부; 를 포함하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 2항에 있어서, 상기 버퍼_변환부는,
XGMII를 통하여 입력되는 10기가비트 이더넷 프레임을 수신하는 수신_데이터부;
상기 수신된 10기가비트 이더넷 프레임 상태를 저장하는 수신_상태부;
상기 수신된 10기가비트 이더넷 프레임의 시작과 종료를 검출하는 시작_종료_검출부;
상기 수신된 10기가비트 이더넷 프레임의 도착지 주소, 출발지 주소 및 체크섬(checksum)을 검출하는 SA_DA_FCS_검출부;
상기 수신된 10기가비트 이더넷 프레임에서 PAUSE 프레임을 검출하는 PAUSE_검출부; 및
상기 수신된 10기가비트 이더넷 미디어 독립 인터페이스 데이터를 기가비트이더넷 매체접근제어 데이터로 변환시키는 역변환부; 를 포함하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 3항에 있어서, 상기 수신_데이터부 및 상기 수신_상태부는,
라운드 로빈 포맷으로 구성되며, 읽기(read)와 쓰기(wirte)를 독립적으로 수행하고 165.25MHz 클럭에 따라 이중 데이터 레이트 방식으로 동작하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 3항에 있어서, 상기 시작_종료_검출부는,
상기 10기가비트 이더넷 프레임의 수신 완료 직후에 상기 프레임의 시작과 종료의 검출결과를 상기 역변환부 및 상기 SA_DA_FCS_검출부에게 전달하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 3항에 있어서, 상기 DA_SA_FCS_검출부는,
상기 역변환부가 10기가비트 이더넷 프레임을 기가비트 이더넷 프레임 형식으로 변환 완료 직후에 상기 프레임의 도착지 주소, 출발지 주소 및 체크섬 정보를 상기 포트_분석_제어부로 전달하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 2항에 있어서, 상기 포트_분석_제어부는,
상기 출발지_입력부를 통해 다른 프레임 역다중화기가 전달한 출발지 주소 정보를 수신하여 테이블 형태로 저장 및 처리하는 도착지_처리부;
상기 버퍼_변환부로부터 도착지 주소, 출발지 주소 및 체크섬 정보를 수신한 후 내장된 도착지_테이블을 검사하여 해당 프레임 다중화기 번호를 추가하고, 도착지 주소를 비교하여 PAUSE 상태가 아닌 출력_버퍼부를 선택하는 포트_비교_제어부;
상기 포트_비교_제어부로부터 도착지 주소, 출발지 주소, 체크섬 정보 및 프레임 다중화기 번호를 수신하여 테이블로 저장 및 처리하고 설정된 주기별로 상기 정보를 출발지_출력부로 전달하는 출발지_처리부; 를 포함하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 7항에 있어서, 상기 도착지_처리부는,
상기 수신한 출발지 주소 및 프레임 역다중화기 번호를 도착지 주소 및 프레임 다중화기 번호로 변환하고 에이징(aging) 정보를 추가한 터너리(ternary) 형태의 도착지_테이블을 구성하며, 상기 포트_비교_제어부가 도착지 주소를 보내면 상기 도착지_테이블을 검사하여 상기 도착지 주소와 같은 터너리가 있을 경우에는 그 해당 터너리에 함께 저장된 프레임 다중화기 정보를 상기 포트_비교_제어부에게 전송하고 그 해당 터너리에 함께 저장된 에이징 정보를 수정하며, 상기 도착지_테이블에 상기 도착지 주소와 같은 터너리가 없을 경우에는 상기 포트_비교_제어부에게 터너리가 없다는 정보를 전달하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 7항에 있어서, 상기 출발지_처리부는,
출발지 주소와 에이징(aging) 정보를 가진 튜플(tuple) 형태의 출발지_테이블, 새로운 출발지 주소를 저장하는 신규_주소 버퍼, 상기 신규_주소 버퍼에 저장된 출발지 주소의 수효 및 상기 신규_주소 버퍼의 시작점을 가리키는 포인터를 포함하며,
상기 포트_비교_제어부로부터 전달된 상기 정보들을 상기 출발지_출력부로 전달하고, 상기 출발지_테이블을 검사하여 상기 수신한 출발지 주소와 같은 튜플이 있을 경우에는 그 해당 튜플에 함께 저장된 에이징 정보를 수정하며, 상기 출발지_테이블에 상기 출발지 주소와 같은 튜플이 없을 경우에는 상기 출발지_테이블에 상기 출발지 주소와 에이징 정보를 추가한 후 상기 신규_주소 버퍼에 상기 출발지 주소를 추가하고 상기 출발지 주소의 수효를 1 만큼 증가하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 9항에 있어서, 상기 출발지_처리부는,
설정된 주기로 새로운 출발지 주소가 저장된 상기 신규_주소 버퍼 정보에 프레임 역다중화기 번호를 추가하고, 상기 신규_주소 버퍼에 저장된 출발지 주소의 수효만큼 상기 출발지_출력부를 통하여 다른 프레임 역다중화기들에게 전달하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 7항에 있어서, 상기 포트_비교_제어부는,
상기 도착지 주소, 출력_버퍼부 번호 및 에이징(aging) 정보를 가진 터너리 형태의 포트_빈도_테이블을 내장하며, 상기 버퍼_변환부로부터 도착지 주소, 출발지 주소 및 체크섬 정보 및 프레임 다중화기 번호의 정보들을 받으면 상기 도착지_처리부에게 상기 도착지 주소를 전달하여 다중화기 번호를 요구하고,
상기 도착지_처리부가 해당되는 다중화기 번호를 보내오면 상기 버퍼_변환부로부터 받은 정보들에 상기 다중화기 번호를 추가하여 상기 출발지_처리부에게 전달한 다음에 특정 출력_버퍼부를 선택하여 그 정보를 상기 포트_선택부로 전달하며,
상기 도착지_처리부가 해당되는 다중화기 번호가 없다는 정보를 보내오면 상기 도착지 주소와 같은 터너리가 상기 포트_빈도_테이블에 있는지를 검사하여 상기 도착지 주소와 같은 터너리가 있는 경우에는 그 터너리에 함께 저장된 에이징 정보를 수정하고 상기 저장된 도착지 주소 및 출력_버퍼부의 정보를 상기 포트_선택부로 전달하며,
상기 도착지 주소와 같은 터너리가 내장되어 있지 않은 경우에는 특정 출력_버퍼부을 선택하고, 그 정보를 상기 포트_선택부에게 전달한 다음에 도착지 주소, 출력_버퍼부의 번호 및 에이징 정보 터너리를 사용_빈도_테이블에 추가하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 11항에 있어서, 상기 특정 출력_버퍼부의 선택은,
PAUSE 상태가 아닌 출력_버퍼부 중에서 유휴중인 임의의 출력_버퍼부를 선택하되, 유휴중인 출력_버퍼부가 없는 경우는 버퍼 여유가 최대인 출력_버퍼부를 선택하는 것을 특징으로 하는 이더넷 스위칭 장치.
제 2항에 있어서, 상기 포트_선택부는,
상기 버퍼_변환부에서 변환된 기가비트 이더넷 매체접근제어 데이터를 입력 받아 복수의 출력_버퍼부 중의 하나를 선택하는 선택부; 및
인터프레임 갭을 생성하여 상기 선택부에 전달하는 IFG_삽입부; 를 포함하여 구성되며 현재 선택된 포트 정보를 포함하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 2항에 있어서, 상기 출력_버퍼부는,
상기 포트 선택부로부터 전달 받은 기가비트 이더넷 매체접근제어 프레임 데이터를 8비트 병렬로 저장하는 데이터_출력부;
상기 저장되는 데이터의 에러상태를 저장하는 에러_출력부;
상기 저장되는 데이터의 인에이블 상태를 저장하는 인에이블_출력부;
상기 복수의 입력_버퍼부 중에서 대응된 입력_버퍼부에서 검출한 PAUSE 프레임 검출 정보를 받아 상기 해당 PAUSE 프레임을 처리하는 PAUSE_처리부; 및
클럭 신호를 생성하여 상기 데이터_출력부, 상기 에러_출력부 및 상기 인에이블_출력부에 각각 공급하는 송신_클럭_생성부; 를 포함하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 14항에 있어서,
상기 데이터_출력부, 상기 에러_출력부 및 상기 인에이블_출력부는,
선입선출(FIFO) 형태로 구성되고 기가비트 이더넷 송신 클럭에 동기되어 동작하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 2항에 있어서, 상기 입력_버퍼부는,
상기 입력되는 기가비트 이더넷 매체접근제어 프레임 데이터의 인에이블 상태를 저장하는 인에이블_입력부;
상기 입력되는 기가비트 이더넷 매체접근제어 프레임 데이터를 8비트 병렬형태로 저장하는 데이터_입력부;
상기 입력되는 데이터의 에러 발생 상태를 저장하는 에러_입력부;
상기 입력되는 기가비트 이더넷 프레임의 FCS 수신 직후에 수신된 프레임이 PAUSE 프레임인지 검출하여 PAUSE 프레임인 경우에 그 PAUSE 프레임 처리를 위해 대응되는 출력_버퍼부에게 해당 PAUSE 프레임 정보를 전달하는 PAUSE_검출부; 및
상기 프레임의 시작과 끝을 나타내는 정보를 저장하고 처리하는 시작_종료_처리부; 를 포함하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭치.
제 16항에 있어서, 상기 시작_종료_처리부는,
상기 입력_데이터부에 입력되는 프레임에서 EOF를 검출하면 상기 프레임의 출발지 주소, 체크섬 정보, 상기 프레임의 시작과 끝을 가리키는 상기 입력_데이터부의 주소정보(SOF,EOF) 및 입력_버퍼부의 번호를 상기 선택_제어부에게 전달하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 16항에 있어서, 상기 데이터_입력부 및 상기 에러_입력부는,
각각 라운드 로빈 포맷으로 구성되며, 상기 인에이블_입력부의 상태가 Low에서 High로 변화한 시점부터 입력 클럭에 동기되어 입력되는 데이터를 저장하고, 상기 인에이블_입력부의 상태가 High에서 Low로 변화하면 프레임 종료로 인식하여 데이터 저장을 정지하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 2항에 있어서, 상기 선택_변환부는,
상기 선택_제어부의 정보에 따라 상기 입력_버퍼부를 선택하고 그 선택된 입력_버퍼부의 이더넷 매체접근제어 프레임 정보와 상태정보를 저장하는 포트_선택_저장부;
상기 포트_선택_저장부에 저장된 기가비트 미디어 인터페이스 신호를 10기가비트 미디어 독립 인터페이스 데이터로 변환시키는 변환_레인_생성부;
인터프레임 갭 데이터를 생성하여 상기 변환_레인_생성부로 삽입하는 IFG_삽입부;
대응되는 프레임 역다중화기의 버퍼_변환부에서 검출한 PAUSE 프레임 검출 정보를 수신하여 상기 해당 PAUSE 프레임을 처리하는 PAUSE_처리부; 및
10기가비트 미디어 독립 인터페이스 송신 클럭을 생성시켜 상기 변환_레인_생성부와 상기 IFG_삽입부로 공급하는 송신_클럭_생성부; 를 포함하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 19항에 있어서, 상기 IFG_삽입부는,
상기 변환_레인_생성부가 포트_선택_저장부에 저장된 하나의 이더넷 프레임을 처리한 직후에 인터프레임 갭을 삽입하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 2항에 있어서, 상기 선택_제어부는,
상기 선택_변환부로부터 송신 상태신호(status signal)에 대한 정보를 받아 저장하는 송신_상태부;
상기 출발지_입력부로부터 출발지 정보 및 체크섬 정보를 받아 처리하는 송신_처리부; 및
상기 각 입력_버퍼부에서 전달된 프레임의 시작과 끝을 나타내는 정보, 상기 송신_상태부의 송신 상태신호 정보 및 상기 송신_처리부의 출발지 정보와 체크섬정보를 이용하여 특정 입력_버퍼부를 선택하는 포트_선택_제어부; 를 포함하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 21항에 있어서, 상기 송신_상태부는,
상기 선택_변환부에 의해 처리된 PAUSE 상태가 아닌 경우 인터프레임 갭의 송출이 완료된 시점을 인식하여 상기 포트_선택_제어부에게 그 해당 정보를 전달하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 21항에 있어서, 상기 포트_선택_제어부는,
상기 입력_버퍼부 번호와 프레임 시작 주소 및 프레임 종료 주소를 포함하는 터너리로 구성된 라운드 로빈 포맷의 국지_주소_테이블을 내장하며, 현재 처리 대기중인 상기 터너리의 수효(Tnm) 및 대기중인 상기 국지_주소_테이블에서 가장 오래된 터너리를 지시하는 포인터를 포함하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 21항에 있어서, 상기 포트_선택_제어부는,
상기 각 입력_버퍼부에서 전달한 프레임의 출발지 주소 정보가 상기 송신_처리부에 내장된 출발지_주소_테이블의 터너리에 있는지를 검사하고, 상기 출발지 주소가 상기 출발지_주소_테이블에 있는 경우에는 체크섬, SOF, EOF, 입력_버퍼부 정보 및 상기 전달된 출발지 주소를 상기 송신_처리부에게 전달하며, 상기 출발지 주소가 상기 출발지_주소_테이블에 없는 경우에는 상기 국지_주소_테이블에 입력_버퍼부 번호, SOF 및 EOF를 터너리 형태로 추가하고 현재 처리 대기중인 상기 터너리의 수효 정보를 1 만큼 증가하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 21항에 있어서, 상기 송신_처리부는,
현재 송신 대기중인 출력 버퍼부의 주소를 가리키는 정보들을 저장한 라운드 로빈 형태의 XA_pool부;
상기 XA_pool부에 저장된 정보 중 가장 오래된 정보를 나타내는 XA-p 포인터;
상기 XA_pool부에 저장된 정보의 수효를 나타내는 XA-n;
프레임의 체크섬(FCS)을 저장하는 FCSS, 상기 프레임의 시작과 끝 주소를 나타내는 SOF와 EOF, 및 상기 입력_버퍼부의 번호가 쿼드러플릿(quadruplet) 형태로 저장되는 라운드 로빈 방식의 출발지_순서_테이블; 및
출발지 주소, 포인터(xgb) 및 현재 보관중인 상기 출발지_순서_테이블의 FCS 수효정보(gbn)가 터너리(ternary) 형태로 저장된 출발지_주소_테이블; 을 포함하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 25항에 있어서, 상기 송신_처리부는,
상기 출발지_입력부가 출발지 주소와 FCS를 보내오면 출발지_주소 테이블 안에 해당되는 출발지_주소 터너리가 있는지 검사하고, 상기 출발지_주소 테이블 안에 해당되는 출발지_주소 터너리가 있는 경우에는 그 터너리의 FCS 수효정보(gbn)를 1 만큼 증가한 후에 상기 포인터(xgb)가 가리키는 출발지_순서_테이블의 상기 FCS 수효정보(gbn) 번째 위치의 FCSS에 상기 출발지_입력부가 보낸 FCS 값을 저장하며, 상기 출발지_주소 테이블 안에 해당되는 출발지_주소 터너리가 없는 경우에는 상기 출발지_주소 테이블에 새로운 터너리를 추가하여 새로운 출발지_순서_테이블을 생성하고, 상기 새로운 터너리의 xgb은 새로 생성된 출발지_순서_테이블의 첫 번째 쿼드러플릿(quadruplet)을 가리키도록 하고 상기 새로운 터너리의 gbn 값은 1로 한 다음에, 첫 번째 쿼드러플릿(quadruplet)의 FCSS에는 상기 출발지_입력 블록이 보낸 FCS 값을 저장하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 25항에 있어서, 상기 송신_처리부는,
상기 포트_선택_제어부가 출발지 주소, FCS, SOF, EOF 및 입력_버퍼부 번호를 보내오면, 출발지_주소 테이블 안에 해당되는 출발지_주소 터너리가가 있는지 검사하고, 상기 출발지_주소 테이블 안에 해당되는 출발지_주소 터너리가 있는 경우에는 그 터너리의 상기 포인터(xgb)가 가리키는 출발지_순서_테이블의 FCSS를 검사한 다음에, 상기 포트_선택_제어부의 FCS가 있는 위치의 quadruplet에 SOF, EOF 및 입력_버퍼부의 번호를 저장하며, 상기 quadruplet의 FCS 위치가 상기 포인터(xgb)가 가리키는 포인터의 FCS 값과 동일한 경우에는 XA-n 값을 증가하고XA_p + XA-n 의 XA_pool 위치에 상기 포인터(xgb)를 추가하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 25항에 있어서, 상기 송신_처리부는,
상기 포트_선택_제어부가 상기 XA-n의 수효가 1 이상인 경우에 상기 XA-p 포인터가 가리키는 XA-pool부에 저장된 값이 지정하는 위치로부터 FCS, SOF, EOF 및 입력_버퍼부의 번호 정보를 가져가고, 상기 포트_선택_제어부가 가져갔던 상기 FCS를 가리키는 상기 출발지_주소_테이블의 포인터(xgb)가 다음 번 FCS를 가리키도록 변화시키고 같은 터너리에 속한 gbn의 값을 1만큼 감소시킨 후에, 상기 gbn의 값이 0 이면 상기 출발지_주소_테이블의 포인터(xgb)가 가리키는 상기 출발지_순서_테이블을 소멸시키고 상기 출발지_주소_테이블의 상기 gbn이 속한 터너리를 삭제하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
제 25항에 있어서,
상기 송신_상태부로부터 다음 번 프레임의 전송 가능하다는 정보를 얻었을 때 상기 포트_선택_제어부는, XA-n의 수효가 1 이상인 경우에는 XA-p 포인터가 가리키는 XA-pool부에 저장된 값이 지정하는 위치로부터 FCS, SOF, EOF 및 입력_버퍼 번호 정보를 가져와서 상기 선택_변환부 내로 전달하고, 상기 XA-n의 수효가 0 인 경우에는 상기 터너리의 수효(Tnm)을 검사하여 1 이상인 경우에는 대기중인 국지_주소_테이블에서 가장 오래된 터너리를 지시하는 포인터가 지시하는 국지_주소_테이블의 터너리로부터 입력_버퍼부 번호, SOF 및 EOF 정보를 상기 선택_변환부 내로 전달한 다음에 상기 포인터는 그 다음의 터너리를 지시하도록 증가시키고 현재 처리 대기중인 상기 터너리의 수효 정보는 1 만큼 감소하며, 상기 XA-n의 수효가 0 및 상기 터너리의 수효(Tnm)가 0 인 경우에는 특정 입력_버퍼부 내에서 출발지 주소, 체크섬, SOF, EOF 및 상기 입력_버퍼부 정보를 전달할 때까지 대기하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 장치.
각각 프레임 역다중화 및 프레임 다중화를 수행하는 복수의 프레임 역다중화기 및 프레임 다중화기 쌍을 구비한 이더넷 스위칭장치에서 프레임 다중화를 이용한 이더넷 스위칭 방법에 있어서,
상기 프레임 역다중화는,
버퍼_변환부에서 10기가비트 미디어 독립 인터페이스(XGMII)의 형식에 따라 입력되는 10기가비트 미디어 독립 인터페이스 데이터를 저장하고 이를 기가비트 이더넷 매체접근제어 데이터로 변환시키는 제1 단계;
포트_분석_제어부에서 상기 변환된 기가비트 이더넷 프레임의 도착지 및 수신상태를 분석하여 출력할 포트를 선택하는 제2 단계;
출발지_입력부에서 다른 프레임 역다중화기의 출발지_출력부로부터 전달되는 10기가비트 이더넷 프레임의 출발지 정보를 받아 상기 포트_분석_제어부 내에 도착지 주소 테이블을 형성하고 상기 출발지_출력부는 상기 버퍼_변환부로부터 받은 프레임의 도착지 주소, 출발지 주소 및 역다중화기 번호정보를 상기 출발지_입력부로전달하는 제3 단계;
포트_선택부에서 상기 버퍼_변환부에 의해 변환된 기가비트 이더넷 프레임을 특정 포트로 전달하는 제4 단계; 및
복수의 출력_버퍼부에서 상기 포트_선택부에 의해 선택된 다수의 기가비트 이더넷 프레임을 저장하고 출력하는 제5 단계; 를 포함하고,
프레임 다중화는,
복수의 입력_버퍼부에서 기가비트 미디어 독립 인터페이스(GMII)의 형식에 따라 입력되는 기기비트 이더넷 프레임을 저장하고 PAUSE 프레임을 검출하는 제6 단계;
상기 출발지_입력부에서 상기 다른 다중화기/역다중화기 쌍으로부터 전달되는 10기가비트 이더넷 프레임의 출발지 주소 정보를 선택_제어부로 전달하는 제7 단계;
상기 선택_제어부에서 상기 전달된 프레임의 출발지 주소 정보를 받아 상기 복수의 입력_버퍼부 중 하나를 선택하는 제어신호를 발생하는 제8 단계; 및
선택_변환부에서 상기 제어신호에 의해 복수의 기가비트 이더넷 프레임 중 하나를 선택하고 이를 10기가비트 미디어 독립 인터페이스(XGMII) 데이터로 변환하여 출력하는 제9 단계; 를 포함하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 방법.
제 30항에 있어서, 상기 제1 단계는,
수신_데이터부에서 상기 10기가비트 이더넷 미디어 독립 인터페이스를 통하여 입력되는 10기가비트 이더넷 미디어 독립 인터페이스 데이터를 받아 저장하는 제10 단계;
수신_상태부에서 상기 수신되는 10기가비트 이더넷 프레임 데이터의 상태를 저장하는 제11 단계;
시작_종료_검출부에서 상기 10기가비트 이더넷 미디어 독립 인터페이스 데이터 프레임의 시작과 종료를 검출하는 제12 단계;
도착_주소_검출부에서 상기 수신되는 이더넷 프레임 도착지 주소를 검출하는 제13 단계;
PAUSE_검출부 및 PAUSE_처리부에서 상기 수신되는 10기가비트 이더넷 프레임으로부터 PAUSE 프레임을 검출 및 처리하는 제14 단계; 및
역변환부에서 상기 10기가비트 이더넷 미디어 독립 인터페이스 데이터를 기가비트 이더넷 매체접근제어 데이터로 변환시키는 제15 단계; 를 포함하는 것을 특징으로 하는 프레인 다중화를 이용한 이더넷 스위칭 방법.
제 31항에 있어서, 상기 제12 단계는,
상기 수신_데이터부에 저장된 데이터 값이 유휴 데이터인가를 판단하는 제16 단계;
상기 수신_상태부에 저장된 데이터 상태값이 모두 1인가를 판단하는 제17 단계;
상기 제16 단계 및 상기 제17 단계의 판단결과 상기 저장된 데이터 값이 유휴 데이터이고 상기 저장된 데이터 상태값이 모두 1인 경우 상기 수신 데이터의 최하위 8비트의 값이 프레임 시작 데이터이고 나머지 값이 프리앰블이며 상기 수신_상태부 값이 1인가를 판단하는 제18 단계; 및
상기 제18 단계의 판단결과 상기 수신데이터의 최하위 8비트의 값이 프레임시작 데이터이고 상기 나머지 값이 프리앰블이며 상기 수신_상태부 값이 1이면, 상기 수신_데이터부에 입력되는 다음 데이터의 최상위 8비트의 값이 프레임 시작 데이터이고 나머지 값이 프리앰블인 경우에는 그 이후에 수신_데이터부에 입력되는 데이터를 정상적인 이더넷 매체접근제어 프레임 데이터로 인식하는 제19 단계; 를 포함하는 것을 특징으로 하는 프레인 다중화를 이용한 이더넷 스위칭 방법.
제 31항에 있어서, 상기 제14 단계는,
상기 복수의 입력_버퍼부에 내장된 상기 PAUSE_검출부가 GMII 형식에 따라서 입력되는 기가비트 이더넷 프레임으로부터 PAUSE 프레임을 검출하는 제20 단계;
상기 복수의 출력_버퍼부에 내장된 상기 PAUSE_처리부가 대응하는 PAUSE_검출부의 요구에 의하여 PAUSE 처리를 하는 제21 단계;
상기 PAUSE_처리부가 상기 PAUSE_검출부의 요구에 의하여 출력버퍼를 통하여 PAUSE 프레임을 송출하는 제22 단계;
상기 PAUSE_검출부에서 상기 PAUSE_검출부가 XGMII의 형식에 따라 입력되는 10기가비트 이더넷 프레임으로부터 PAUSE 프레임을 검출하는 제23 단계;
상기 PAUSE_처리부가 상기 PAUSE_검출부의 요구에 의하여 PAUSE 처리를 하는 제24 단계; 및
상기 PAUSE_처리부에서 현재 PAUSE 중인 상기 출력_버퍼부의 수효가 설정된 기준 값을 넘었을 때 PAUSE 프레임을 송출하는 제25 단계; 를 포함하는 것을 특징으로 하는 프레인 다중화를 이용한 이더넷 스위칭 방법.
제 33항에 있어서, 상기 제20 단계는,
상기 입력_버퍼부가 프레임을 수신 완료한 직후에 PAUSE 프레임인지 여부를 판단하는 제26 단계;
상기 판단결과 PAUSE 프레임이 아닌 경우에는 상기 입력_버퍼부가 다음 프레임을 수신 완료시기까지 대기하는 제27 단계; 및
상기 판단결과 PAUSE 프레임인 경우에는 대응되는 출력_버퍼부에 내장된 PAUSE_처리부에게 상기 PAUSE 프레임을 전달하는 제28 단계; 를 포함하는 프레임 다중화를 이용한 이더넷 스위칭 방법.
제 33항에 있어서, 상기 제21 단계는,
상기 PAUSE_검출부가 전달한 PAUSE 프레임으로부터 PAUSE 정보를 추출하여 PAUSE 시간을 계산하는 제29 단계;
상기 계산된 PAUSE 시간이 0 인 경우 시간의 흐름에 따라 0이 될 때까지 자동으로 감소하는 PAUSE timer를 0으로 하고, PAUSE 중인 출력버퍼의 수효를 1 만큼감소하는 제30 단계;
상기 계산된 PAUSE 시간이 0 이 아닌 경우 PAUSE 중인 출력버퍼의 수효를 1 만큼 증가하는 제31 단계;
상기 계산된 PAUSE 시간을 PAUSE timer 값에 넣고 상기 PAUSE timer의 값이 0이 될 때까지 프레임 송출을 중지하는 제32 단계; 및
상기 PAUSE timer 값이 0 이 되면 PAUSE 중인 출력버퍼의 수효를 1 만큼 감소하는 제33 단계; 를 포함하는 프레임 다중화를 이용한 이더넷 스위칭 방법.
제 33항에 있어서, 상기 제22 단계는,
상기 출력_버퍼부가 현재 송출중인 기가비트 이더넷 프레임의 출력을 완료할 때까지 대기하는 제34 단계; 및
상기 출력_버퍼부의 송출 완료 직후에 상기 버퍼_변환부에 내장된 PAUSE_검출부가 요구하는 PAUSE 프레임을 상기 출력_버퍼부을 통하여 출력하는 제35 단계; 를 포함하는 프레임 다중화를 이용한 이더넷 스위칭 방법.
제 33항에 있어서, 상기 제23 단계는,
상기 버퍼_변환부가 프레임을 수신 완료한 직후에 PAUSE 프레임인지 여부를 판단하는 제36 단계;
상기 판단결과 PAUSE 프레임이 아닌 경우에는 상기 버퍼_변환부가 다음 프레임을 수신 완료시기까지 대기하는 제37 단계; 및
상기 판단결과 PAUSE 프레임인 경우에는 상기 선택_변환부에 내장된 PAUSE_처리부와 상기 복수의 출력_버퍼부에 내장된 PAUSE_처리부들에게 상기 PAUSE 프레임을 전달하는 제38 단계; 를 포함하는 프레임 다중화를 이용한 이더넷 스위칭 방법.
제 33항에 있어서, 상기 제24 단계는,
상기 PAUSE_검출부가 전달한 PAUSE 프레임으로부터 PAUSE 정보를 추출하여 PAUSE 시간을 계산하는 제39 단계;
상기 계산된 PAUSE 시간이 0 인 경우 시간의 흐름에 따라 0이 될 때까지 자동으로 감소하는 PAUSE timer를 0으로 하고 PAUSE 중인 출력_버퍼의 수효를 1 만큼 감소하는 제40 단계;
상기 계산된 PAUSE 시간을 PAUSE timer 값에 넣고 PAUSE timer의 값이 0이 될 때까지 프레임 송출을 중지하는 제41 단계; 및
상기 PAUSE timer 값이 0 이 되면 다음 PAUSE 프레임의 수신을 대기하는 제42 단계; 를 포함하는 것을 특징으로 하는 프레임 다중화를 이용한 이더넷 스위칭 방법.
제 33항에 있어서, 상기 제25 단계는,
상기 선택_변환부가 현재 송출중인 기가비트 이더넷 프레임의 출력을 완료할 때까지 대기하는 제43 단계; 및
상기 선택_변환부의 송출 완료 직후에 미리 설정된 PAUSE 시간을 포함한 PAUSE 프레임을 상기 선택_변환부를 통하여 출력하는 제44단계; 를 포함하는 프레임 다중화를 이용한 이더넷 스위칭 방법.
KR10-2002-0068906A 2002-11-07 2002-11-07 프레임 다중화를 이용한 이더넷 스위칭 장치 및 방법 KR100454681B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR10-2002-0068906A KR100454681B1 (ko) 2002-11-07 2002-11-07 프레임 다중화를 이용한 이더넷 스위칭 장치 및 방법
US10/440,789 US7260120B2 (en) 2002-11-07 2003-05-19 Ethernet switching apparatus and method using frame multiplexing and demultiplexing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0068906A KR100454681B1 (ko) 2002-11-07 2002-11-07 프레임 다중화를 이용한 이더넷 스위칭 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20040040707A KR20040040707A (ko) 2004-05-13
KR100454681B1 true KR100454681B1 (ko) 2004-11-03

Family

ID=32226251

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0068906A KR100454681B1 (ko) 2002-11-07 2002-11-07 프레임 다중화를 이용한 이더넷 스위칭 장치 및 방법

Country Status (2)

Country Link
US (1) US7260120B2 (ko)
KR (1) KR100454681B1 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI221369B (en) * 2003-04-29 2004-09-21 Via Tech Inc Device and method for adjusting the frequency of the timing signal
US20050141551A1 (en) * 2003-12-29 2005-06-30 Mcneil Roy Jr. Common LAN architecture and flow control relay
US20050182848A1 (en) * 2003-12-29 2005-08-18 Mcneil Roy Jr. Rate limiting using pause frame capability
US20080101402A1 (en) * 2004-02-04 2008-05-01 Jung-You Feng Network communication apparatus and related method thereof
US7929518B2 (en) * 2004-07-15 2011-04-19 Broadcom Corporation Method and system for a gigabit Ethernet IP telephone chip with integrated DDR interface
US20060039400A1 (en) * 2004-08-23 2006-02-23 Suvhasis Mukhopadhyay Pause frame reconciliation in end-to-end and local flow control for ethernet over sonet
KR100605609B1 (ko) * 2004-12-09 2006-07-31 한국전자통신연구원 기가비트 이더넷 스위칭 장치
US7492771B2 (en) 2005-04-01 2009-02-17 International Business Machines Corporation Method for performing a packet header lookup
US7697536B2 (en) * 2005-04-01 2010-04-13 International Business Machines Corporation Network communications for operating system partitions
US7508771B2 (en) * 2005-04-01 2009-03-24 International Business Machines Corporation Method for reducing latency in a host ethernet adapter (HEA)
US7606166B2 (en) 2005-04-01 2009-10-20 International Business Machines Corporation System and method for computing a blind checksum in a host ethernet adapter (HEA)
US20060221953A1 (en) * 2005-04-01 2006-10-05 Claude Basso Method and apparatus for blind checksum and correction for network transmissions
US7577151B2 (en) * 2005-04-01 2009-08-18 International Business Machines Corporation Method and apparatus for providing a network connection table
US7706409B2 (en) 2005-04-01 2010-04-27 International Business Machines Corporation System and method for parsing, filtering, and computing the checksum in a host Ethernet adapter (HEA)
US7586936B2 (en) * 2005-04-01 2009-09-08 International Business Machines Corporation Host Ethernet adapter for networking offload in server environment
US7903687B2 (en) 2005-04-01 2011-03-08 International Business Machines Corporation Method for scheduling, writing, and reading data inside the partitioned buffer of a switch, router or packet processing device
US7881332B2 (en) 2005-04-01 2011-02-01 International Business Machines Corporation Configurable ports for a host ethernet adapter
US7739424B2 (en) * 2005-04-18 2010-06-15 Integrated Device Technology, Inc. Packet processing switch and methods of operation thereof
US7697566B2 (en) * 2005-12-30 2010-04-13 Video Products Group, Inc. Method and apparatus for enabling transport of ethernet data over a serial digital interface transport service
US20070237088A1 (en) * 2006-04-05 2007-10-11 Honeywell International. Inc Apparatus and method for providing network security
US7817652B1 (en) * 2006-05-12 2010-10-19 Integrated Device Technology, Inc. System and method of constructing data packets in a packet switch
US7747904B1 (en) 2006-05-12 2010-06-29 Integrated Device Technology, Inc. Error management system and method for a packet switch
US7706387B1 (en) 2006-05-31 2010-04-27 Integrated Device Technology, Inc. System and method for round robin arbitration
US7720068B2 (en) 2006-08-23 2010-05-18 Solarflare Communications, Inc. Method and system for a multi-rate gigabit media independent interface
US7693040B1 (en) 2007-05-01 2010-04-06 Integrated Device Technology, Inc. Processing switch for orthogonal frequency division multiplexing
KR100922737B1 (ko) * 2007-12-18 2009-10-22 한국전자통신연구원 기가비트 이더넷(GbE) 신호를 광 전송 계위(OTH)구조에 정합하는 장치
CN101527674B (zh) * 2008-03-04 2011-04-27 中国移动通信集团公司 一种数据处理的方法及装置
US7792046B2 (en) * 2008-06-05 2010-09-07 Vss Monitoring, Inc. Ethernet switch-based network monitoring system and methods
US7869468B1 (en) * 2009-06-12 2011-01-11 Applied Micro Circuits Corporation Transport of multilane traffic over a multilane physical interface
US8204084B2 (en) * 2010-02-25 2012-06-19 Mark Henrik Sandstrom Individual bit timeslot granular, input status adaptive multiplexing
KR101338702B1 (ko) * 2010-04-26 2013-12-06 한국전자통신연구원 다중 레인 기반의 고속 이더넷에서 동적 레인 정보를 송수신하는 방법 및 그 장치
KR101055163B1 (ko) 2010-06-21 2011-08-08 주식회사 다산네트웍스 다양한 phy 칩이 사용가능한 이더넷 스위치
JP5644598B2 (ja) * 2011-03-11 2014-12-24 富士通株式会社 信号多重分離装置及び信号多重収容装置及び信号多重収容・分離装置
US8582437B2 (en) * 2011-06-21 2013-11-12 Broadcom Corporation System and method for increasing input/output speeds in a network switch
CN102281192B (zh) * 2011-07-19 2017-09-29 中兴通讯股份有限公司 交换网络芯片的信元处理方法及装置
JP5634379B2 (ja) * 2011-10-27 2014-12-03 株式会社日立製作所 計算機システムおよび計算機システムの情報保存方法
KR102004926B1 (ko) * 2012-11-06 2019-07-29 한국전자통신연구원 캔-이더넷 프레임 변환장치 및 이의 프레임 변환 방법
KR101819269B1 (ko) 2014-06-27 2018-02-28 한국전자통신연구원 다계층 통합 패브릭 스위치 기반의 패킷-회선 통합 전송 시스템에서 otn 트래픽 관리 장치 및 방법
CN110557268B (zh) * 2018-05-31 2021-01-29 华为技术有限公司 对以太网帧的发送进行控制的方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732085A (en) * 1994-12-16 1998-03-24 Electronics And Telecommunications Research Institute Fixed length packet switching apparatus using multiplexers and demultiplexers
EP1124355A2 (en) * 2000-02-09 2001-08-16 Nortel Networks Corporation 10 Gigabit ethernet mappings for a common lan/wan pmd interface
WO2002071668A1 (en) * 2001-03-06 2002-09-12 Redfern Broadband Networks, Inc. Optical traffic grooming

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802054A (en) * 1996-08-15 1998-09-01 3Com Corporation Atomic network switch with integrated circuit switch nodes
US6246692B1 (en) * 1998-02-03 2001-06-12 Broadcom Corporation Packet switching fabric using the segmented ring with resource reservation control
US6249528B1 (en) * 1998-03-12 2001-06-19 I-Cube, Inc. Network switch providing per virtual channel queuing for segmentation and reassembly
US7170906B2 (en) * 1998-07-22 2007-01-30 Synchrodyne Networks, Inc. Time-based grooming and degrooming methods with common time reference for optical networks
US6310882B1 (en) * 1999-01-27 2001-10-30 3Com Corporation High speed switch architecture using separate transmit and receive channels with independent forwarding tables
US6778536B1 (en) * 1999-11-09 2004-08-17 Synchrodyne Networks, Inc. Combined wavelength division multiplexing, time division multiplexing, and asynchronous packet switching with common time reference
US6757282B1 (en) * 1999-11-09 2004-06-29 Synchrodyne Networks, Inc. Fast switching of data packet with common time reference

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732085A (en) * 1994-12-16 1998-03-24 Electronics And Telecommunications Research Institute Fixed length packet switching apparatus using multiplexers and demultiplexers
EP1124355A2 (en) * 2000-02-09 2001-08-16 Nortel Networks Corporation 10 Gigabit ethernet mappings for a common lan/wan pmd interface
WO2002071668A1 (en) * 2001-03-06 2002-09-12 Redfern Broadband Networks, Inc. Optical traffic grooming

Also Published As

Publication number Publication date
US7260120B2 (en) 2007-08-21
KR20040040707A (ko) 2004-05-13
US20040090995A1 (en) 2004-05-13

Similar Documents

Publication Publication Date Title
KR100454681B1 (ko) 프레임 다중화를 이용한 이더넷 스위칭 장치 및 방법
KR100429911B1 (ko) 가변길이 패킷 다중화 및 역다중화 장치와 방법
JP3412825B2 (ja) データネットワーク上でデータパケットをスイッチングする方法および装置
US9030937B2 (en) Backplane interface adapter with error control and redundant fabric
US6697368B2 (en) High-performance network switch
US7206283B2 (en) High-performance network switch
US6373848B1 (en) Architecture for a multi-port adapter with a single media access control (MAC)
US7236490B2 (en) Backplane interface adapter
US7203194B2 (en) Method and system for encoding wide striped cells
US8325716B2 (en) Data path optimization algorithm
US20040022263A1 (en) Cross point switch with out-of-band parameter fine tuning
CA2310909C (en) Packet switching apparatus and method in data network
US20020091884A1 (en) Method and system for translating data formats
EP1230766A1 (en) Switching table update in switch fabric
US8116305B2 (en) Multi-plane cell switch fabric system
US6724759B1 (en) System, method and article of manufacture for transferring a packet from a port controller to a switch fabric in a switch fabric chipset system
US8621100B1 (en) Merge systems and methods for transmit system interfaces
CN112631985B (zh) 一种链路共享的片上网络
JP2001024702A (ja) パケット多重装置及び多重方法
US20060117114A1 (en) Staggering memory requests
EP1228609A1 (en) Novel switch fabric chipset system and method
EP1236317A1 (en) System, method and article of manufacture for preparing a packet for transmission through a switch fabric chipset system

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20091228

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee