KR100690418B1 - 네트워크 프로세서의 멀티캐스트 전송 방법, 이 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체 및 멀티캐스트 전송 지원 네트워크 프로세서 - Google Patents

네트워크 프로세서의 멀티캐스트 전송 방법, 이 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체 및 멀티캐스트 전송 지원 네트워크 프로세서 Download PDF

Info

Publication number
KR100690418B1
KR100690418B1 KR1020037013729A KR20037013729A KR100690418B1 KR 100690418 B1 KR100690418 B1 KR 100690418B1 KR 1020037013729 A KR1020037013729 A KR 1020037013729A KR 20037013729 A KR20037013729 A KR 20037013729A KR 100690418 B1 KR100690418 B1 KR 100690418B1
Authority
KR
South Korea
Prior art keywords
frame
buffer
queue
field
multicast
Prior art date
Application number
KR1020037013729A
Other languages
English (en)
Other versions
KR20040002922A (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 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20040002922A publication Critical patent/KR20040002922A/ko
Application granted granted Critical
Publication of KR100690418B1 publication Critical patent/KR100690418B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1881Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with schedule organisation, e.g. priority, sequence management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/20Traffic policing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/43Assembling or disassembling of packets, e.g. segmentation and reassembly [SAR]

Abstract

본 발명은 네트워크 프로세서를 통한 멀티캐스트 전송에 관한 것으로서, 멀티캐스트 전송 메모리 요건을 최소화하고 포트 성능 불일치를 고려하는 네트워크 프로세서를 통한 멀티캐스트 전송을 개시하고 있다. 네트워크 프로세서를 통한 멀티캐스트 전송의 프레임 데이터를, 각종 제어 스트럭쳐와 기준 프레임이 관련된 버퍼들에 읽어 들인다. 이 기준 프레임과 관련 제어 스트럭쳐에 의해서, 복수의 프레임 사본을 생성하는 일 없이도, 멀티캐스트 목표가 서비스를 받을 수 있다. 또한, 이 동일한 기준 프레임과 제어 스트럭쳐에 의해서, 모든 멀티캐스트 전송이 완료될 때까지 대기하는 일 없이도, 각 멀티캐스트 목표마다 할당된 버퍼들이 복귀될 수 있다.

Description

네트워크 프로세서의 멀티캐스트 전송 방법, 이 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체 및 멀티캐스트 전송 지원 네트워크 프로세서{EFFICIENT PROCESSING OF MULTICAST TRANSMISSIONS}
본 발명은 일반적으로 네트워크 프로세서의 멀티캐스트 전송에 관한 것으로서, 보다 구체적으로는, 이전의 방법보다 더욱 효율적으로 네트워크 프로세서의 멀티캐스트 전송을 수행하는 방법에 관한 것이다.
네트워크 프로세서의 멀티캐스트 전송 방식을 구현함에 있어서는 유니캐스트 방식에서 발생하지 않는 몇 가지 복잡한 문제를 검토하여야 한다. 예컨대, 프레임(들)을 단일 목표에 전송하는 경우(즉, 유니캐스트 전송의 경우)에는, 한 프레임에 관련된 버퍼들(즉, 메모리 버퍼들에 기억된 모든 관련 데이터)은 그 데이터가 각 버퍼로부터 판독될 때 프리(free) 버퍼 큐(즉, 프레임 데이터에 대해서 사용 가능한 메모리 버퍼들의 링크 리스트)에 복귀될 수 있다. 그러나, 목표 위치가 여러 개 있는 경우인 멀티캐스트 시나리오의 경우에는 한 프레임에 관련된 버퍼들은 프리 버퍼 큐에 직접 복귀되지 않고, 그 대신에, 마지막 멀티캐스트 전송이 행해진 후에, 링크 리스트를 "재검색(re-walking)"함으로써 복귀되어야 한다. 유니캐스트 전송에서는 발생하지 않는 멀티캐스트에서의 다른 복잡한 문제는 각각의 멀티캐스트 목표 위치가 기준 프레임 내에서 상이한 시작점을 필요로 한다거나 부가 정보를 더 필요로 할 수 있다고 하는 가능성에 있다. 이들 문제의 전형적인 해법은 각 멀티캐스트 요구시마다(즉, 각 멀티캐스트 목표마다) 기준 프레임의 전체 사본(copy)을 생성하는 것을 포함한다. 복수의 사본을 생성하는 것으로 문제를 해결할 수는 있지만, 이 방식은 멀티캐스트 요구를 만족시키기 위해서 많은 메모리 버퍼를 차용하여야 하므로, 시스템 퍼포먼스에 부담을 주게 된다.
프레임에 관하여 복수의 사본을 생성하는 대신에, 기준 프레임에 링크하여 멀티캐스트 전송을 구현하는 경우에는, 일부 포트가 다른 포트보다 높은 퍼포먼스 레벨에서 동작할 수 있기 때문에, 이 때 고려하여야 할 사항은 포트 퍼포먼스의 불일치가 된다. 특히, 전송을 시작하는 최종 프레임과 전송을 종료하는 최종 프레임이 다를 수 있기 때문에 기준 프레임에 다시 링크하는 것에 문제가 생길 수 있다. 시작 프레임과 중지 프레임 간의 이러한 불일치 때문에, 기준 프레임 버퍼를 다시 프리 버퍼 큐로 복귀시키는 시기를 아는 것이 문제로 된다. 특히, 시작 프레임이 종료한 후에 버퍼를 단순히 복귀시킬 수는 없다. 한 가지 해법은 모든 멀티캐스트 전송이 완료될 때까지 대기하는 것이지만, 이러한 접근 방법도 역시, 시스템 퍼포먼스를 불필요하게 방해할 수 있다.
높은 퍼포먼스의 네트워크 프로세서에서는 멀티캐스트 전송 메모리 요건을 최소화하고 포트 퍼포먼스 불일치를 감안하는 신규한 해법이 요구된다.
본 발명은 특허 청구 범위의 청구항 1에 청구한 바와 같은, 네트워크 프로세 서의 멀티캐스트 전송을 위한 방법을 안출한 것이다.
또한, 본 발명은 청구항 7항에서 청구한 바와 같은 네트워크 프로세서와, 청구항 6항에서 청구한 바와 같은 컴퓨터 프로그램을 안출한 것이다.
본 발명에 따르면, 이 새로운 방법은 각 멀티캐스트 상황(즉, 각 멀티캐스트 목표)마다 전체 프레임을 복사할 필요를 없애고, 이에 따라, 메모리 요건도 감소시키며 포트 퍼포먼스 불일치로 인한 문제도 해결한다. 또한, 바람직하게는, 차용된 버퍼들은 (다른 상황들이 전송을 완료한 시기와 무관하게) 이 차용된 버퍼들을 사용한 프리 큐로 복귀되고, 카운터를 이용하여 모든 상황이 전송된 시기를 결정하므로 기준 프레임도 마찬가지로 프리 큐로 복귀될 수 있다.
전술한 목적, 형태 및 이점 및 다른 목적, 형태 및 이점은 도면을 참조하여 본 발명의 양호한 실시예에 관한 다음의 상세한 설명으로부터 더욱 잘 이해될 것이다.
도 1은 데이터 스트럭쳐를 설명하는 블럭도이다.
도 2는 본 발명의 양호한 실시예에 관한 클립 세트 시스템 환경을 나타내는 블럭도이다.
도 3은 도 2의 클립 세트에 사용되는 내장용 프로세서 콤플렉스 및 데이터플로우 칩을 더욱 상세하게 나타내는 블럭도이다.
도 4는 일반 메시지 포맷을 나타내는 도면이다.
도 5는 본 발명의 양호한 실시예에 따른 데이터 스트럭쳐를 설명하는 블럭도 이다.
도 6은 본 발명의 양호한 실시예에 의해서 구현되는 프로세스를 나타내는 흐름도이다.
이제 도면, 특히 도 1을 참조하면, 본 발명의 양호한 실시예에 따른 데이터 스트럭쳐가 도시되어 있다. 프레임은 일련의 버퍼(1011 내지 1015)에 기억된다. 각 버퍼(101)는 대응하는 버퍼 제어 블럭(BCB)(1021 내지 1025)을 가지며, 버퍼 제어 블럭(BCB)은 일련의 버퍼를 하나의 프레임에 링크시키는 데 사용된다. 각 프레임은 대응하는 프레임 제어 블럭(FCB)(1031 내지 103n)을 가지며, 프레임 제어 블럭(FCB)은 일련의 프레임을 큐에 링크시키는 데 사용된다. 각 큐는 큐 제어 블럭(QCB)(104)을 가지며, 큐 제어 블럭(QCB)은 최초 및 최종 FCB(103)의 어드레스를 큐 상에 유지하고 프레임 수의 카운트를 큐 상에 유지한다.
데이터 스트럭쳐의 정의
버퍼(101)는 데이터 기억용으로 사용된다. 각 버퍼(101)는 크기가 64 바이트이고 1 내지 64 바이트의 유효 데이터를 기억할 수 있다. 버퍼(101) 내의 모든 유효 데이터는 단일 인접 범위의 바이트들로서 기억되어야 한다. 64 바이트보다 큰 프레임을 기억하기 위해서, 링크 리스트를 통해 복수의 버퍼가 함께 체인식으로 연결되어 있다.
초기에는 모든 버퍼가 프리 버퍼 큐에 배치되어 있다. 하나의 프레임이 도달 하면, 버퍼들은 프리 버퍼 큐의 헤드로부터 팝(pop)(제거)되고, 프레임 데이터를 기억하는데 사용된다. 하나의 프레임의 마지막 전송이 수행될 때, 프레임 데이터의 기억에 사용된 버퍼는 프리 버퍼 큐의 테일(tail)에 밀어 넣어진다.
버퍼 제어 블럭(BCB)(102)은 복수의 버퍼를 하나의 프레임으로 체인식으로 연결시키기 위한 링크 리스트를 형성한다. 또한, 버퍼 제어 블럭(BCB)(102)은 유효 데이터를 포함하고 있는 버퍼(101)의 바이트를 레코드(record)한다. 모든 버퍼(101)에는 대응하는 BCB(102)가 있다. 데이터 기억 메모리(도 2에서 도시한 205 및 206) 안의 버퍼(101)의 어드레스는 BCB 어레이에서의 대응하는 BCB(102)의 어드레스로서의 역할도 한다. BCB(102)는 다음의 필드들을 포함하고 있다.
다음 버퍼 어드레스(NBA) 필드는 다음 버퍼(101)를 지시하는 포인터를 프레임에 기억하는 데 사용된다. 현재 버퍼(101)에 대한 BCB(102)의 NBA 필드는 프레임의 다음 버퍼(101)의 어드레스[및 대응하는 BCB(102)]를 포함한다.
시작 바이트 위치(SBP) 필드는 프레임의 다음 버퍼(101)에 있는 최초 유효 바이트의 데이터의 오프셋을 기억하는 데 사용된다. 유효 값은 0부터 63이다.
종료 바이트 위치(EBP) 필드는 프레임의 다음 버퍼(101)에 있는 최종 유효 바이트의 데이터의 오프셋을 기억하는 데 사용된다. 유효 값은 0부터 63이다.
일시 버퍼(TBUF) 비트는 데이터가 전송용으로 판독된 후에 프레임 안에서 그 데이터를 갖는 다음 버퍼(101)를 프리 버퍼 큐에 복귀시켜야 하는 지를 지정하기 위해서 멀티캐스트 프레임을 전송하는 경우에만 사용된다. 이 비트는 멀티캐스트 프레임에 대해서만 유효하다. 이 일시 버퍼(TBUF) 비트는 프레임 수신 시에 제로인 디폴트 상태로 설정된다.
SBP 필드, EBP 필드 및 TBUF 필드는 프레임 안의 "다음" 버퍼(101)에 적용되고 현재의 BCB(102)에 대응하는 버퍼(101)에는 적용되지 않는다는 점을 유념한다. 이들 필드는 이와 같이 정의되어, 다음 버퍼(101)에 대한 SBP 정보, EBP 정보 및 TBUF 정보가 그의 어드레스(NBA)와 함께 동시에 펫치(fetch, 호출)될 수 있게 한다.
BCB(102)의 각 필드는 초기에, 프레임 수신 기간 중에 데이터플로우 하드웨어(202)(도 2)에 의해서 로드된다. 피코코드는 이어서, 전송 이전에 BCB(102)의 필드들을 수정하여 프레임을 "편집"한다. NBA 필드를 변형하여, 1 개의 프레임 안에(서) 버퍼들을 추가 또는 삭제할 수 있다. SBP 필드 및 EBP 필드를 변형하여, 버퍼(101) 안의 유효 바이트수를 수정할 수 있다. TBUF 비트는 데이터 전송 직후에 버퍼(101)를 프리 버퍼 큐에 복귀시키는 것을 요구하기 위해서 멀티캐스트 프레임의 일부인 버퍼에 대해서 설정될 수 있다.
BCB(102)의 NBA 필드는 프리 버퍼 큐 내에 버퍼의 링크 리스트를 형성하는 데에도 사용된다. NBA는 대응하는 버퍼(101)가 프리 버퍼 큐 안에 있을 때 유효 정보를 포함하고 있는 BCB(102) 안의 유일한 필드이다.
프레임 제어 블럭(FCB)(103)은 하나의 큐 안에 있는 프레임들의 링크 리스트를 형성한다. 프레임 제어 블럭(FCB)(103)은 또한, 프레임 안의 총 유효 바이트수와, 프레임 안의 최초 버퍼(101)의 버퍼 어드레스 및 SBP/EBP와, 2 비트 프레임 "타입" 필드를 기록한다. FCB(103)는 다음 필드들을 포함한다.
다음 프레임 어드레스(NFA) 필드는 프레임 큐 안에서 다음 프레임에 대한 포 인터를 기억하는데 사용된다. 현재 프레임의 FCB(103)의 NFA 필드는 큐 안의 다음 프레임의 FCB(103)의 어드레스를 포함하고 있다. 이 필드는 대응하는 프레임이 큐 안의 최종 프레임인 경우에는 유효 데이터를 포함하고 있지 않다. QCB 안의 "QCNT" 필드가 0이면, 큐 안에는 프레임이 존재하지 않는다. QCB 안의 "QCNT" 필드가 1이면, 큐 안에는 "다음 프레임"이 없으므로 큐의 헤드의 FCB의 "NFA" 필드는 유효하지 않다.
바이트 카운트(BCNT) 필드는 프레임 큐의 다음 프레임의 모든 버퍼에서 유효 바이트의 총수의 카운트를 기억하는데 사용된다. BCNT는 큐 안의 "다음" 필드에 적용되고, BCNT 필드가 기억되어 있는 FCB(103)와 관련된 프레임에는 적용되지 않는다는 점을 주목한다. BCNT 필드를 이와 같이 정의함으로써, 큐 안의 다음 프레임의 어드레스(NFA)와 길이(BCNT)가 동시에 펫치(호출)될 수 있다.
최초 버퍼 어드레스(FBA) 필드는 1 개의 프레임 안의 최초 버퍼(101)[및 대응하는 BCB(102)]의 어드레스를 기억하는데 사용된다.
SBP 필드와 EBP 필드는 1 개의 프레임의 최초 버퍼(101) 안에 있는 유효 데이터의 시작 바이트 위치 및 종료 바이트 위치를 기억하는데 사용된다.
타입 필드는 피코코드가 전송되어야 할 프레임의 포맷 및 타입에 관하여 데이터플로우 하드웨어(202)에 지시하는데 사용된다.
● 00 "FACB를 갖는 유니캐스트 프레임". 이 프레임은 단일의 목적지에 전송되어야 하고(유니캐스트), 각 버퍼(101)는 데이터가 전송을 위해서 판독되면 프리 버퍼 큐에 복귀되어야 한다. 하나 또는 그 이상의 프레임 변경(alteration) 제어 블럭(FACB)은 그 프레임의 최초 버퍼(101)에 기억된다.
● 01 "FACB를 갖는 스태틱 프레임". 이 프레임은 모든 버퍼를 프리 버퍼 큐에 복귀시키는 일 없이 전송되어야 한다. 하나 또는 그 이상의 프레임 변경 제어 블럭(FACB)은 그 프레임의 최초 버퍼(101)에 기억된다.
● 10 "FACB를 갖지 않는 유니캐스트 프레임". 이 프레임은 단일 목적지에 전송되어야 하고(유니캐스트), 각 버퍼(101)는 데이터가 전송을 위해서 판독되면 프리 버퍼 큐에 복귀되어야 한다. 그 프레임의 최초 버퍼(101)에 기억된 프레임 변경 제어 블럭(FACB)은 없다.
● 11 "FACB를 갖는 멀티캐스트 프레임으로써, 최초 버퍼는 TBUF이다". 이 프레임은 복수의 목적지에 전송되어야 하고(멀티캐스트), 그 프레임의 모든 예에 공통되는 버퍼는 그 프레임이 모든 목적지에 완전히 전송된 후에만 프리 버퍼 큐에 복귀되어야 한다. 각 프레임 예의 최초 버퍼(101)에는 하나 또는 그 이상의 프레임 변경 제어 블럭(FACB)이 기억된다. 또한, 이 프레임의 최초 버퍼(101)와 BCB(102) 안에 설정된 TBUF 비트를 갖는 어떤 후속 버퍼(101)는 단일 프레임 예에 관련되어 있다고 추정되고, 데이터가 버퍼(101)로부터 전송된 직후에 프리 버퍼 큐에 복귀된다.
FCB(103) 안의 각 필드는 초기에, 프레임 수신 기간에 데이터플로우 하드웨어(202)(도 2)에 의해서 로드된다. 이어서, 피코코드는 프레임 전송 이전에 FCB(103)의 BCNT 필드, FBA 필드, SBP 필드, SBP 필드, EBP 필드 및 타입 필드를 중첩시킨다. 편집 결과, 프레임 길이가 수정되었다면 BCNT 필드를 변경할 수 있다. 프레임의 최초 버퍼(101)의 어드레스 또는 유효 데이터 범위에 어떤 변경이 있으면 FBA 필드, SBP 필드 및 EBP 필드를 변경할 수 있다. 타입 필드는 프레임 전송 타입을 설정하도록 기록된다.
프리 FCB 큐는, 현재 소정의 프레임에 할당되어 있지 않은 FCB들의 링크 리스트를 유지하는데 사용된다. FCB(103)의 NFA 필드는 프리 FCB 큐 안의 FCB들의 링크 리스트를 형성하는데 사용된다. NFA는 대응하는 FCB(103)가 프리 FCB 큐 안에 있을 때 유효 정보를 포함하고 있는 FCB(103) 안의 유일한 필드이다.
큐 제어 블럭(QCB)(104)은 프레임 큐 안의 최초 FCB 및 최종 FCB의 어드레스와 프레임 큐 안의 총 프레임수의 카운트를 기억함으로써 그 프레임 큐를 유지한다. QCB(104)는 다음의 필드를 포함한다.
● 헤드 FCBA - 큐의 헤드에 프레임의 FCB 어드레스(FCBA)를 기억하는데 사용.
● 헤드 BCNT - 큐의 선두부(top)에 프레임에 있는 총 유효 바이트수의 카운트를 기억하는데 사용.
● 테일 FCBA - 큐의 테일에 프레임의 FCB 어드레스(FCBA)를 기억하는데 사용.
● QCNT - 큐에 현재 프레임수의 카운트를 기억하는데 사용.
큐의 테일에 프레임을 추가하는 것은 다음과 같다.
1. 큐 안에 이미 하나 또는 그 이상의 프레임이 있다면(QCNT가 1보다 크거나 같다면), 원래 큐의 테일에 있는 FCB(103)의 NFA 필드와 BCNT 필드는 새로운 프레임아 큐의 테일에 체인식으로 연결되도록 기록된다. 이전에 큐에 프레임이 없었다면(QCNT가 0이면), QCB(104)의 헤드 FCBA 필드와 헤드 BCNT 필드는 그 새로 운 프레임이 큐의 헤드가 되도록 기록된다.
2. QCB(104)의 테일 FCBA는 그 새로운 FCB(103)가 큐의 테일에 추가되도록 지시하도록 기록된다.
3. QCB(104)의 QCNT를 1 증분하여, 큐 안의 1 개의 추가 프레임을 반영한다.
큐의 헤드로부터 프레임을 제거하는 것은 다음과 같다.
1. 큐 안에 이미 1 개 이상의 프레임이 있다면(QCNT가 1보다 크면), 큐의 헤드에 있는 FCB(103)의 NFA 필드와 BCNT 필드를 판독하여, 큐의 헤드에 있을 새로운 프레임의 FCBA와 BCNT를 획득한다. 이어서, 이들 FCBA값과 BCNT값을 QCB(104)의 헤드 FCBA와 헤드 BCNT에 기록하여, 큐의 헤드에 새로운 프레임을 형성한다.
2. QCB(104)의 QCNT를 1 증분하여 큐 안에 1 개가 채 안되는 프레임을 반영한다.
프레임 수신
이 절(節)에서는 네트워크 프로세서로의 디스패치를 통한 프레임 수신의 데이터 스트럭쳐 용법에 관하여 설명한다.
단계 1: 최초의 프레임을 수신하면, 프리 버퍼 어드레스가 프리 버퍼 큐의 헤드로부터 팝(제거)되고, 프리 FCB(103)가 프리 FCB 큐의 헤드로부터 팝(제거)된다. 버퍼(101)에는 최대 64 바이트의 프레임 데이터가 기록된다. FCB(103)에는 최초 버퍼(101)에 대한 FBA값, SBP값 및 EBP값이 기록된다. 작업 바이트 카운트 레지스터는 최초 버퍼(101)에 기록된 바이트의 수로 설정된다. 전체 프레임이 최초 버퍼(101)에 적합하면, 단계 3으로 진행한다. 그렇지 않으면 단계 2로 이어진다.
단계 2: 추가 버퍼(101)가 프리 버퍼 큐로부터 팝(제거)되고, 최대 64 바이트의 데이터가 버퍼(101)에 기록된다. 이전 버퍼(101)의 BCB(102)에는 현재 버퍼(101)에 대한 NBA값, SBP값 및 EBP값이 기록된다. 버퍼(101)에 기록된 바이트의 수는 작업 바이트 카운트 레지스터에 추가된다. 프레임의 끝부분을 수신하면, 단계 3으로 진행한다. 그렇지 않으면, 단계 2를 반복한다.
단계 3: 이어서, 프레임을 입력 큐의 테일에 큐 처리를 행하고, 네트워크 프로세서로의 디스패치를 기다린다.
1. 이전에 입력 큐에 프레임이 없었다면, 입력 큐의 QCB(104)의 헤드 FCBA와 테일 FCBA에는 새로운 프레임의 FCB(103)의 어드레스가 기록된다. QCB(104)의 헤드 BCNT에 작업 바이트 카운트 레지스터가 기록되어, 새로운 프레임의 총 길이를 레코드한다. QCB(104)의 QCNT를 1 증분한다.
2. 입력 큐에 이미 하나 또는 그 이상의 프레임이 있었다면, 입력 큐의 테일 상의 이전 프레임에 대한 FCB(103)의 NFA 필드와 BCNT 필드를 기록한다. NFA 필드에는 새로운 프레임의 FCB(103)의 어드레스가 기록된다. BCNT 필드에는 작업 바이트 카운트 레지스터가 기록되어, 새로운 프레임의 길이를 레코드한다. 이어서, 입력 큐의 QCB(104)의 테일 FCBA에는 새로운 프레임의 FCB(103)의 어드레스가 기록된다. QCB(104)의 QCNT를 1 증분한다.
프레임이 입력 큐의 헤드에 도달하면, 네트워크 프로세서로의 디스패치에 대해서 큐 해제 처리가 행해진다. 이어서, 입력 큐의 QCB(104)로부터 헤드 FCBA 필드와 헤드 BCNT 필드를 판독한다. 이어서, 헤드 FCBA값을 이용하여 큐의 헤드에 있는 FCB(103)의 내용을 판독한다. 또한, FCB(103)로부터 판독한 NFA값과 BCNT값을 사용하여, QCB(104)의 헤드 FCBA 필드와 헤드 BCNT 필드를 업데이트한다. FCB(103)로부터 판독한 FBA값, SBP값 및 EBP값을 사용하여, 네트워크 프로세서로의 디스패치에 대한 프레임 데이터를 찾고 판독한다. BCB(102) 체인은 디스패치에 필요한 프레임 데이터를 판독할 때까지 계속된다. QCB(104)의 QCNT를 1 증분한다.
도 2는 본 발명의 양호한 실시예를 구현하는 칩 세트 시스템 환경을 도시하고 있다. 보다 구체적으로, 데이터는 스위치 패브릭(201)에서 데이터플로우 칩(202)로, 다시 POS(패킷 오버 SONET) 프레이머(Framer) 또는 이더넷 MAC(medium access control)(203)로 흐른다. POS 프레이머 또는 이더넷 MAC(203)로부터는, 데이터는 데이터플로우 칩(204)으로, 다시 스위치 패브릭(201)으로 흐른다. 데이터플로우 칩(202, 204)에는 데이터 기억부[다이내믹 랜덤 액세스 메모리(DRAM)](205, 206)가 각각 지원되고, 또한 제어 기억부[스태틱 랜덤 액세스 메모리(SRAM)](207, 208)도 각각 지원된다. 데이터플로우 칩(202, 204)은 개개의 임베디드 프로세스 콤플렉스(EPC)(209, 210)와 각각 통신하고, 옵션에 따라서는 스케쥴러 칩(211, 212)과도 각각 통신한다. EPC 칩(209, 210)에는 DRAM으로 구현된 룩업 테이블(213, 214)가 각각 지원되고, 또한 SRAM으로 구현된 룩업 테이블(215, 216)도 각각 지원된다. EPC 칩(209)에는 추가로 코프로세서 인터페이스와 주변 구성 요소 상호 접속(PCI) 로컬 버스가 제공되고, EPC 칩(210)에는 추가로 내용 어드레스 지정 가능한 메모리(CAM)(217)가 지원된다. 스케쥴러 칩(211, 212)을 사용하는 경우, 이들 스케쥴러 칩(211, 212)에는 SRAM으로 구현된 플로우 큐(218, 219)가 각각 지원된 다.
도 3은 데이터플로우 칩(202 또는 204), EPC 칩(209 또는 210) 및 스케쥴러 칩(211 또는 212)을 더욱 상세하게 도시하고 있다. EPC 칩(209 또는 210)은 네트워크 트래픽을 포워드(forward)하는 일을 담당하는 소프트웨어를 실행한다. EPC 칩(209 또는 210)은 테이블 검색, 폴리싱(policing) 및 카운팅과 같은 일반적인 동작을 수행하는 하드웨어 지원 기능을 포함한다. 데이터플로우 칩(202 또는 204)은 네트워크 포트를 통해서 또는 스위치 패브릭 인터페이스를 통해서 또는 네트워크 포트와 스위치 패브릭 인터페이스 모두를 통해서 트래픽을 송수신하는 주요 데이터 경로로서의 역할을 한다. 데이터플로우 칩(202 또는 204)은 트래픽이 네트워크 프로세서 서브시스템을 통과하여 흐를 때 트래픽을 버퍼링하기 위한 대형 데이터 기억 메모리(205 또는 206)에 대한 인터페이스를 마련하고 있다. 데이터플로우 칩(202 또는 204)은 처리를 위해서 프레임 헤더를 EPC로 디스패치하고, EPC의 요구에 응답하여 프레임을 목표 목적지에 포워드한다. 옵션에 의한 스케쥴러 칩(211 또는 212)을 추가하여, 네트워크 프로세서 서브시스템이 제공하는 QoS(서비스 품질, Quality of Service)을 향상시킬 수 있다. 스케쥴러 칩(211 또는 212)에 의해서, 수 천개의 네트워크 트래픽 "흐름"이 그 흐름에 배정된 QoS 레벨에 따라서 개별적으로 스케쥴링될 수 있다.
EPC 칩(209 또는 210)은 네트워크 트래픽의 병렬 처리를 행하는 12 개의 다이애딕 프로토콜 프로세서 유닛(DPPU)(301)을 포함한다. DPPU마다 "피코코드" 엔진이 2 개씩 포함되어 있다. 각 피코코드 엔진은 2 개의 스레드(thread)를 지원한다. 스레드들 사이에는 제로 오버헤드 콘텍스트 스위칭이 지원된다. 피코코드 명령 기억부는 EPC 칩에 내장되어 있다. 인입(incoming) 프레임은 데이터플로우 칩(202 또는 204)로부터 데이터플로우 인터페이스(302)를 통해서 수신되고 패킷 버퍼(303)에 일시 기억된다. 디스패치 기능은 인입 프레임을 프로토콜 프로세서(301)에 배포한다. 12 개의 입력 큐 카테고리에 의해서, 프레임은 지정된 스레드를 향해 가거나 모든 스레드에 걸쳐서 분배될 수 있다. 완성(completion) 유닛 기능은 프레임 오더(order)가 프로토콜 프로세서(301)의 출력부에 유지되는 것을 보증한다.
내장된 PowerPC(등록상표) 마이크로프로세서 코어(304)에 의해서 더욱 고차원의 시스템 관리 소프트웨어가 실행될 수 있다. 외부 DDR SDRAM에 대한 18 비트 인터페이스는 최대 64 Mbyte의 명령 기억을 제공한다. 다른 제어 기능의 부착을 위해서 또는 MAC 또는 프레임 구성 요소와 같은 주변 회로의 구성을 위해서 32 비트 PCI 인터페이스가 설치된다.
공지된 레이어-2 프레임 포맷과 레이어-3 프레임 포맷을 식별하기 위해서 프레임이 프로토콜 프로세서에 디스패치되면, 하드웨어 기반의 분류 기능이 프레임을 분석한다. 분류기의 출력을 이용하여 피코코드 스레드의 상태를 프리컨디셔닝한 후에, 각 프레임의 처리를 개시한다.
테이블 검색 엔진은 테이블 검색을 수행하는 하드웨어 지원 기능을 제공한다. 테이블은 퍼트리샤 트리(Patricia tree)로서 유지되어 있고, 이 때, 검색 종료의 결과는 "리프(leaf)" 엔트리의 어드레스가 되고, 피코코드는 이 어드레스를 이용하여 어떤 흐름에 관련된 정보를 기억한다. 콤플렉스 룰 기반의 검색을 위해서, 3 가지의 테이블 검색 알고리즘, 즉 고정 매치형(FM), 최장 프리픽스 매치형(LPM) 및 유일 소프트웨어 관리 트리형(SMT) 알고리즘이 지원된다. 제어 기억 메모리(206 또는 207)는 대용량 DRAM 테이블과 고속 SRAM 테이블을 마련하여, 수 백만 개의 흐름에 관한 와이어 속력 분류를 지원한다. 룩업 성능의 향상을 위해서, 옵션으로 SRAM 인터페이스를 내용 어드레스 가능한 메모리(CAM)(도 2의 217)의 부착용으로 사용할 수 있다.
피코코드는 데이터플로우 칩(202 또는 204)에 부착된 데이터 기억부(205 또는 206)를 판독 및 기록함으로써 프레임을 직접 편집할 수 있다. 더 좋은 성능을 위해서, 프레임이 출력 포트를 통해서 전송될 때, 피코코드는 변형을 수행하도록 데이터플로우 칩에 명령하는 프레임 변경 커맨드를 생성하는 것도 가능하다.
카운터 관리자 기능은 통계적 카운터를 유지함에 있어서 피코코드를 보조한다. 온칩 SRAM과 옵션의 외부 SRAM(폴리시 관리자와 공유됨)을 사용하여, 프레임 도달간 속도로 발생하는 이벤트를 카운트할 수 있다. (테이블 검색 기능과 공유되는) 복수의 외부 제어 기억 DDR SDRAM 중 하나를 이용하여, 보다 저속으로 발생하는 이벤트를 위해서 다수의 카운트를 유지할 수 있다.
폴리시 관리자 기능은 인입 트래픽 흐름을 폴리싱함에 있어서 피코코드를 보조한다. 폴리시 관리자 기능은 선택 가능한 변수 및 알고리즘과 함께 수 천 개의 리키 버켓 미터(leaky bucket meter)를 유지한다. 1 개의 온칩 SRAM에는 1K 폴리싱 제어 블럭(PolCB)을 유지할 수 있다. PolCB의 수를 늘리기 위해서 (카운터 관리자와 공유되는) 옵션의 외부 SRAM을 추가할 수 있다.
데이터플로우 칩(202 또는 204)은 "포트" 인터페이스 모드 시에 또는 "스위치" 인터페이스 모드 시에 동작하도록 별개로 구성 가능한 송신용 인터페이스와 수신용 인터페이스를 구현한다. 포트 모드 시에, 데이터플로우 칩은 이더넷 MAC 또는 패킷 오버 SONET(POS) 프레이머와 같은 다양한 네트워크 매체의 부착을 위해서 프레임을 교환한다. 데이터플로우 칩은 수신 제어기(305)와 제어 기억 메모리(206)에 의해서 이 처리를 행한다. 스위치 모드 시에, 데이터플로우 칩은 셀 기반의 스위치 패브릭에 부착하기 위해서 프레임을 64 바이트 셀 세그먼트의 형태로 교환한다. 데이터플로우 칩의 송신 제어기(306) 및 수신 제어기(305)에 의해서 각각 구현되는 물리적 버스는 64 비트 데이터 버스이다. 인터페이스는 산업용 POS 프레이머의 직접 부착을 지원하고, 필드 프로그램 가능한 게이트 어레이(FPGA) 로직을 통해서 산업용 이더넷 MAC 및 스위치 패브릭 인터페이스(예컨대, CSIX)에 적합하게 될 수 있다.
데이터베이스 중재기(307)를 통해서 데이터플로우 칩(202 또는 204)에 부착된 대용량 데이터 메모리(205 또는 206)는 인입 프레임 속도가 인출(outgoing) 프레임 속도를 초과하는 경우에 트래픽 버스트를 흡수하는 "네트워크 버퍼"를 제공한다. 대용량 데이터 메모리(205 또는 206)는 IP 프래그먼트를 재조립하는 저장소(repository)로서, 그리고 TCP 터미네이션(termination)과 같은 애플리케이션에서 가능한 재전송을 대기시키는 프레임용 저장소로서의 역할도 한다. 포트 인터페이스와 스위치 인터페이스에 지속적인 송신 및 수신 대역폭을 제공하도록 복수의 DRAM 인터페이스를 지원한다. EPC 피코코드에 의한 데이터 기억 메모리 직접 판 독/기록용으로 추가 대역폭을 예비로 둔다. 데이터 기억 메모리(205 또는 206)는 버퍼들의 링크 리스트를 통해서 관리된다. 외부 SRAM을 사용하여, 버퍼 및 프레임의 링크 리스트를 유지한다.
데이터플로우 칩(202 또는 204)은 데이터 기억 메모리(205 또는 206)의 오버플로우를 방지하기 위해서 RED(랜덤 조기 감지, Random Early Discard)와 같은 고급 체증 제어 알고리즘을 구현한다. 체증 제어 알고리즘들은 EPC 프코코드와, EPC 폴리싱 기능[이들 모두는 EPC 인터페이스(308)를 통해서 통신한다]과, 데이터 플로우 칩과 스케쥴러 칩에 의해서 유지되는 각종 큐 임계값에 의해서 제공되는 입력으로부터 동작한다. 데이터플로우 칩 내의 "감지 확률 메모리(discard probability memory)"는 EPC 피코코드에 의해서 유지되고 체증 제어 기능에 의해서 참조되어, 각종 표준 감지 알고리즘(standard discard algorithm) 또는 전용 감지 알고리즘(proprietary discard algorithm)의 구현을 가능하게 한다.
데이터플로우 칩(202 또는 204)은 프레임 변경 제어 블럭(FACB)(도 5에 도시함)에 기억된 커맨드에 기초하여 프레임 변경 로직(309)에서 프레임 변경을 수행하기 위해서 풍부한 세트의 하드웨어 보조 기능을 구현한다. 공지된 변경에는 다음의 프레임 필드의 변형을 포함한다. 그 프레임 필드는 이더넷 DA/SA, VLAN, DIX, SAP, SNAP, MPLS, IP TTL, IP TOS 바이트 및 IP 헤더 체크섬이다. FACB는 2 가지 목적을 지원한다. FACB는 멀티캐스트 알고리즘용으로 기준 FCB 어드레스를 기억하고, FACB는 프레임 데이터가 출력 포트를 통해서 전송될 때 프레임 데이터에 대한 변형을 수행하기 위해서 프레임 변경 로직(309)[데이터플로우의 송신 제어기(306)의 일부] 에 명령하는 프레임 변경 커맨드를 기억한다. 프레임 변경 로직(309)에 의해서 수행되는 공지의 프레임 변형의 예에는, 이더넷 목적지 또는 발신지 어드레스 오버레이, 이더넷 프로토콜 타입 오버레이, 멀티프로토콜 레이블 스위칭(MPLS) 레이블 삽입 및 삭제, 인터넷 프로토콜(IP) TTL(Time-to-Live) 감분 등이 있다. 본 발명을 구현함에 있어서 프레임 변형 로직은 필요하지 않음을 주목한다. 데이터플로우 칩(202 또는 204)이 프레임 변형 로직 기능을 포함하고 있지 않은 경우에도 동일한 멀티캐스트 기술을 사용하는 것은 가능하다.
데이터플로우 칩(202 또는 204)은 "가상 출력 큐잉"이라고 하는 기술을 구현하는데, 이 경우, 개개의 출력 큐는 상이한 출력 포트 또는 목표 목적지로 향하는 프레임에 대해서 유지된다. 이러한 구성은 단일 출력 포트가 막히지 않도록 라인 블럭킹의 헤드를 보호한다. 각 출력 포트마다 고순위 큐와 저순위 큐를 유지하여, 예비 및 비예비 대역폭 트래픽이 독립적으로 큐될 수 있다.
스케쥴러 칩(211 또는 212)은 "서비스 품질"을 제공하는데, 이것은, 각종 알고리즘, 예컨대 "보장된 대역폭", "최상의 노력(best effort)", "최고 대역폭" 등을 이용하여 스케쥴 처리될 수 있는 플로우 큐를 유지함으로써 행해진다. 외부 SRAM은 수 천 개의 플로우 큐를 능동적으로 큐 처리된 수 십만 개의 프레임과 함께 유지하는데 사용된다. 스케쥴러 칩(211 또는 212)은 플로우 큐의 임계값마다에 기초하여 프레임이 폐기(discard)될 수 있게 함으로써 데이터플로우 칩의 체증 제어 알고리즘을 보충한다.
데이터플로우 칩(202 또는 204), EPC 칩(209 또는 210) 및 스케쥴러 칩(211 또는 212) 간에 흐르는 모든 정보는 "메시지"라고 하는 형태로 교환된다는 점을 주목한다. 스위치 패브릭(201), 데이터플로우 칩(202) 및 POS 프레이머/이더넷 MAC(203) 간에 흐르는 정보는 "프레임" 형태이다. 메시지는 데이터플로우 칩, EPC 칩 및 스케쥴러 칩 간의 "제어" 정보 교환의 경우에만 사용된다. 이러한 메시지의 예에는 디스패치, 인큐(enqueue), 인터럽트/제외, 데이터 판독, 데이터 기록, 레지스터 판독 및 레지스터 기록 등이 있다. 메시지는 요구를 구성할 수도 있고 응답을 구성할 수도 있다.
도 4에는 일반적인 메시지 형태가 도시되어 있다. 도 4를 참조하면, 메시지의 형태는 다음의 구성 요소를 포함한다.
메시지 ID: 메시지 ID 필드는 메시지의 타입을 고유하게 식별하는 메시지의 제1 워드에 있는 8 비트 부호화 값이다.
메시지 변수: 메시지 변수 필드는 다음과 같이 각종 목적에 대한 메시지 다입별로 지정될 수 있는 메시지의 제1 워드에 있는 24 비트 값이다.
● 다른 메시지 타입을 정의하기 위해서 메시지 ID 필드에 대한 확장자로서 사용 가능
● 메시지의 목적을 더 한정하기 위해서 메시지 타입별로 사용 가능
● 응답 시에 복귀되는 데이터를 상관시키는 "시퀀스 번호" 또는 다른 "기준 id" 정보를 전송하는데 사용 가능
● 가변 길이 메시지의 경우에 메시지 길이를 지정하는데 사용 가 능
● 메시지에 지정된 다른 어떤 데이터 변수를 전송하는데 사용 가능
데이터: 메시지 중 나머지는 "0" 내지 "N-1"의 추가적인 32 비트 "데이터" 워드를 구성할 수 있다.
멀티캐스트 전송
이 절(節)에서는 멀티캐스트 프레임의 인큐잉 및 전송 처리에 관하여 설명한다. 도 5는 멀티캐스트 전송의 예를 나타낸다. 이 예의 경우, 멀티캐스트 프레임은 3 개의 목적지에 전송되고 있고, 따라서 3 가지의 "상황"이 있다고 말할 수 있다. 프레임이 최초에 수신되었을 때 배정된 FCB는 프레임의 일생 전체에 걸쳐서 존속하고, 이를 "기준 FCB"(501)라고 부른다. 네트워크 프로세서는 추가 FCB(즉, 도 5의 FCB 1, FCB 2 및 FCB 3)(5021, 5022 및 5023)와 버퍼(5031, 5032 및 5033)를 획득하고, 이들을 원래의 기준 프레임(501)에 링크시켜서 멀티캐스트 프레임 전송의 각 상황을 생성한다. 이어서, 전송을 위해서 각 상황을 큐 처리한다.
각 상황에 고유한 FCB(502)와 버퍼(503)는 각 상황이 전송될 때 폐기된다. 그러나, 기준 FCB(501)와 관련 버퍼(5051 내지 5055)는 상황 전부가 전송된 후에만 폐기된다. 각 프레임 상황은 상이한 포트를 통해서 전송될 수 있기 때문에, 이들 상황이 인큐 처리되었을 때와는 다른 순서로 전송을 완료할 수 있다. 멀티캐스트 카운터(MCC)는 기준 프레임을 폐기하기 위해서 상황 전부가 전송된 시기를 판정하 는데 이용된다. MCC는 도 5의 좌상부에 나타낸 바와 같이 기준 FCB(501)의 비사용 NFA 필드에 기억된다. MCC는 멀티캐스트에서 상황의 수에 의해서 초기화되고, 각 멀티캐스트 상황이 전송될 때 감분된다. MCC가 영(0)에 도달한 경우, 기준 FCB(501)와 그의 관련 버퍼(5051 내지 5055)는 이들을 프리 FCB와 프리 버퍼 큐에 각각 복귀시킴으로써 폐기된다.
기준 FCB(501)와 다른 FCB(5021, 5022 및 5023) 전부는 동일한 FCB 프리 풀(free pool)로부터 온다. FCB가 기준 FCB로서 사용되고 있는 경우, NFA/MCC 필드는 MCC로서 사용된다. FCB가 (기준 FCB가 아닌) 일반 FCB로서 사용되고 있는 경우에는, NFA/MCC 필드는 NFA로서 사용된다. QCB와 FCB 간의 관계는 도 1에 도시되어 있다. FCB(5021, 5022 및 5023)는 전부 전송을 위해서 하나의 큐에 배치된다. 데이터플로우는 모든 출력 큐에 대한 QCB를 포함한다. 각 출력 큐는 하나의 포트(즉, POS 프레이머/이더넷 MAC을 통한 네트워크 통신 링크, 또는 스위치 패브릭을 통한 다른 네트워크 프로세서)와 관련되어 있는 것이 통상적이다. 도 5에 도시된 3 개의 멀티캐스트 상황 각각은 하나의 출력 큐에 큐 처리된다. 동일한 포트를 통해서 전송하기 위해서 3 개의 상황 전부를 큐 처리하는 것도 가능하고, 상이한 포트를 통해서 전송하기 위해서 3 개의 상황 전부를 큐 처리하는 것도 가능하다. 그러나, 3 개의 FCB 각각은 정확히 1 개의 포트를 통해서 전송하기 위해서 하나의 프레임 큐에 배치될 것이다. 이들 FCB의 NFA 필드는 그 큐에 있는 프레임들의 링크 리스트를 작성하는데 사용된다. 그러나, 기준 FCB(501)는 어떤 큐에도 포함되지 않는다. 기 준 FCB(501)는 프레임의 상황 전부가 전송된 후에 원래의 (기준) 프레임의 버퍼들을 버퍼들의 프리 버퍼 큐에 복귀시키는데 사용되는 변수를 기억한다. 기준 FCB(501)는 프레임 큐에 포함되지 않기 때문에, NFA 필드는 링크 리스트를 작성하는데 필요하지 않다. 그 대신에, 이들 NFA의 비트가 MCC 기억용으로 사용된다. 기준 FCB의 어드레스는 각 프레임 상황이 전송될 때 기준 FCB를 찾는데 사용되는 프레임 데이터 앞에서 FACB(도 5에 도시됨)에 기억된다.
EPC 칩(209)은 다음의 행동을 수행하여 멀티캐스트 프레임의 각 상황을 인큐 처리한다.
1. FCB(502)는 프리 FCB 큐로부터 획득되고 상황에 배정된다.
2. 하나 또는 그 이상의 버퍼(503)는 상황에 대한 FACB 및 어떤 고유 헤더를 포함하기 위해서 프리 버퍼 큐로부터 획득된다. FACB의 사용은 멀티캐스트 전송에 필수이다.
3. 상황에 대한 고유 데이터는 위에서 획득한 버퍼(503)에 기록된다. 멀티캐스트의 상황이 상이하면 그의 헤더 데이터도 상이한 것이 일반적이다. 예컨대, 멀티캐스트의 하나의 상황이 이더넷 포트를 통해서 전송되고 있기 때문에 이더넷 헤더를 가질 수 있지만, 다른 상황은 POS 포트를 통해서 전송되고 있기 때문에 POS 헤더를 필요로 한다.
4. 고유 상황 버퍼에 관련된 BCB(504)는 이들을 원래의 "기준 프레임"의 버퍼에 첨부하는 링크 리스트를 작성하도록 기록된다. 고유 상황 버퍼는 기준 프레임의 최초 버퍼에 링크되는데 필요하지 않다. 기준 프레임에서의 선도 바이트들 중 일부 바이트가 상황으로부터 생략될 수 있다면, 상황에 대한 고유 버퍼는 기준 프레임의 최초 버퍼가 아닌 버퍼에 링크될 수 있다. SBP값과 EBP값은 다음 버퍼에서의 유효 바이트를 반영하기 위해서 각 BCB(504)에 기록된다. 이 처리에 의해서, 상황에 대한 최종 고유 버퍼의 BCB(504)는 다른 상황에서 지정되는 바이트 오프셋과는 다른 기준 프레임으로부터 제1 링크 버퍼에서 시작 바이트 오프셋을 지정할 수 있다. TBUF 비트는 다음 버퍼가 그의 데이터의 전송 직후에 프리 버퍼 큐에 복귀되어야 하는 지를 표시하도록 설정된다. 상황에 대한 치종 고유 버퍼는 영으로 설정된 그의 BCB(504)에 TBUF 비트를 보유하여야 한다. 상황에 대한 다른 모든 고유 버퍼의 BCB(504)의 TBUF 비트는 1로 설정된다.
5. 이어서, 네트워크 프로세서는 데이터플로우 칩(202)에 대한 상황의 해제를 위한 인큐 동작을 발행하여 전송한다. 데이터플로우 칩(202)에는 다음의 정보가 인큐 동작의 일부로서 제공된다.
● 목표 큐 번호 - 멀티캐스트 상황이 인큐 처리되어야 할 출력 큐를 지정한다.
● FCBA - 네트워크 프로세서에 의해서 멀티캐스트 상황에 배정되는 프레임 제어 블럭 어드레스(FCBA)를 지정한다.
● BCNT - 총 프레임 길이를 지정한다. 이것은 각 멀티캐스트 상황마다 다를 수 있다.
● FBA - 멀티캐스트 상황에서 최초 버퍼(101)의 어드레스를 지정한다. 최초 버퍼(101)는 항상 멀티캐스트 상황에 고유하다.
● SBP/EBP - 최초 버퍼(101)에서 유효 데이터의 시작 및 종료 바이트 위치를 지정한다.
● 타입 - 전송된 프레임의 타입과 형태를 지정한다. "멀티캐스트" 프레임의 경우에는 항상 2진값 "11"로 설정된다. 이 값은, 1) 프레임은 멀티캐스트 상황이고, 2) 최초 버퍼(101)는 FACB를 포함하며, 3) 최초 버퍼(101)는 일시 버퍼(TBUF=1)임을 의미한다.
● FACB - 프레임 데이터가 전송될 때 데이터플로우 칩(202)에 대한 변경을 지정하여 프레임 데이터에 적용하는 프레임 변경 제어 블럭(FACB) 정보이다. FACB는 각 멀티캐스트 상황마다 상이한 프레임 변경 요구를 포함할 수 있다. 그러나, 각 상황은 모든 상황이 전송된 후에 기준 프레임을 폐기하는데 사용하기 위해서 기준 FCB(501)의 어드레스를 포함하여야 한다.
● 멀티캐스트 행동 - 멀티캐스트 상황을 인큐 처리하는 경우, 네트워크 프로세서는 현재의 인큐가 멀티캐스트 전송의 최초 상황인 지, 중간 상황인 지 또는 최종 상황인 지를 지정한다.
* 01 - 멀티캐스트 최초 - 인큐 처리된 최초 상황은 "멀티캐스트 최초"로서 식별된다.
* 10 - 멀티캐스트 중간 - 멀티캐스트 프레임이 2 개 이상의 상황으로 구성되어 있는 경우, 사이에 있는 모든 상황은 "멀티캐스트 중간"으로서 식별된다.
* 11 - 멀티캐스트 최종 - 인큐 처리된 최종 상황은 "멀티캐스트 최종"으로서 식별된다.
다음은 목표 출력 포트를 거치는 멀티캐스트 프레임 상황의 전송을 통해서 인큐 동작의 수신 시부터의 데이터플로우 칩의 행동에 관하여 설명한다.
단계 1. 데이터플로우 칩(202)은 정보가 기록될 버퍼 어드레스 및 오프셋으로서 인큐에 제공되는 FBA값과 SBP값을 이용하여 프레임의 최초 버퍼(5021)에 FACB 정보를 기록한다.
단계 2. 데이터플로우 칩(202)은 FACB 정보 내부로부터 기준 FCB(501)의 어드레스를 추출한다. 이 어드레스는 기준 FCB(501)를 액세스하여 MCC값을 기억시키는데 사용된다. MCC값은 기준 FCB(501)의 NFA 필드에 기억된다[기준 FCB(501)의 NFA 필드는 모든 큐에 직접 있는 것이 아니기 때문에 사용되지 않는다]. MCC(506)의 값은 인큐에 다음과 같이 업데이트된다.
● 멀티캐스트 행동이 01, 즉 멀티캐스트 최초인 경우, MCC(506)를 2로 설정한다.
● 멀티캐스트 행동이 10, 즉 멀티캐스트 중간인 경우, MCC(506)를 1 증분한다.
● 멀티캐스트 행동이 11, 즉 멀티캐스트 최종인 경우, MCC(506)를 수정하지 않는다.
단계 3. 데이터플로우 칩(202)은 인큐에 제공된 FABC값에 의해서 지정된 FCB(502)에 FBA값, SBP값, EBP값 및 타입값을 기록한다.
단계 4. 데이터플로우 칩(202)은 인큐에서 제공되는 목표 큐 번호값에 의해서 지정된 요구 출력 큐에 프레임을 인큐 처리한다. 데이터플로우 칩(202)은 이 처리를 다음과 같이 행한다.
a. 이전에 출력 큐에 프레임이 없었다면, 출력 큐의 QCB(104)의 헤드 FCBA와 테일 FCBA(도 1)에는 인큐에 제공되는 FCBA값이 기록된다. QCB(104)의 헤드 BCNT에는 인큐에 제공되는 BCNT값이 기록된다. QCB(104)의 QCNT는 1 증분된다.
b. 이미 출력 큐에 하나 또는 그 이상의 프레임이 있었다면, 이전에 출력 큐에는 테일에 프레임에 대한 FCB(502)의 NFA 필드와 BCNT 필드가 기록되어 있다. 이어서, 출력 큐의 QCB(104)의 테일 FCBA 필드(도 1)에는 인큐에 제공되는 FCBA값이 기록된다. QCB(104)의 QCNT는 1 증분된다.
단계 5. 프레임이 출력 큐의 헤드에 도달한 경우, 그 프레임은 출력 포트를 통한 전송을 위해서 디큐 처리(dequeue)된다. 헤드 FCBA 필드와 헤드 BCNT 필드는 츨력 큐의 QCB(104)로부터 판독된다. 프레임 전송 기간 중에 사용하기 위해, 헤드 BCNT값을 작업 바이트 카운트 레지스터에 로드한다. 헤드 FCBA값은 큐의 헤드에 있는 FCB(502)의 내용을 판독하는데 이용된다. FCB(502)로부터 판독된 NFA값 및 BCNT값은 QCB(104)의 헤드 FCBA 필드 및 헤드 BCNT 필드(도 1)를 업데이트하는데 이용된다. 최초 버퍼(5041)로부터의 데이터 전송 기간 중에 사용하기 위해, FCB(502)로부터 판독된 FBA 필드, SBP 필드, EBP 필드 및 타입 필드를 작업 레지스터에 로드한다. 이어서, FCB(502)의 어드레스가 프리 FCB 큐의 테일에 밀어 넣어지면 FCB(502)를 폐기한다. QCB(104)의 QCNT를 1 증분한다.
단계 6. FCB(103)로부터 판독된 FBA값, SBP값, EBP값 및 타입값은 프레임의 최초 버퍼(101)의 내용을 찾아서 판독하는데 이용된다. 타입 필드는 멀티캐스트를 나타내고, 이것은 FACB가 존재한다는 것을 의미한다. 따라서, 이후에, 이 FACB를 판독한 후 프레임 변경 로직에 전송한다. 이 프레임 변경 로직에서는, 프레임 데이터가 전송될 때 그 FACB를 이용하여, 요구받은 변형을 그 프레임 데이터에 적용한다. 기준 FCB(501)의 어드레스도 역시 FACB로부터 추출되고, 프레임 전송 완료 후에 사용하기 위해 작업 레지스터에 기억된다. 이어서, 버퍼(101)로부터의 프레임 데이터(이것이 존재하는 경우)는 출력 포트를 통해서 전송될 출력 FIFO(선입선출 버퍼)에 배치된다. 출력 FIFO에 배치된 바이트의 수는 SBP값과 EBP값으로 나타낸 버퍼(101)의 유효 바이트수와 작업 바이트 카운터 레지스터보다 작다. 이어서, 작업 바이트 카운트 레지스터를 출력 FIFO에 배치된 데이터의 바이트수만큼 증분한다. 작업 바이트 카운트 레지스터의 값이 여전히 영(0)보다 크면, 다음 버퍼(101)의 전송 시에 사용하기 위해, NBA값, SBP값, EBP값 및 TBUF값을 최초 버퍼(101)에 대응하는 BCB(102)로부터 판독하여 작업 레지스터에 로드한다. 이어서, 최초 버퍼(101)의 어드레스가 프리 버퍼 큐의 테일에 밀어 넣어지면, 이 최초 버퍼(101)를 폐기한다.
단계 7. BCB(102)로부터 판독된 NBA값, SBP값, EBP값 및 TBUF값은 프레임의 다음 버퍼(101)의 내용을 찾아서 판독하는데 이용된다. 이어서, 이 버퍼(101)의 프레임 데이터를, 출력 포트를 통해서 전송될 출력 FIFO에 배치한다. 출력 FIFO에 배치 된 바이트의 수는 SBP값과 EBP값으로 나타낸 버퍼(101)의 유효 바이트수와 작업 바이트 카운터 레지스터보다 작다. 이어서, 작업 바이트 카운트 레지스터를 출력 FIFO에 배치된 데이터의 바이트수만큼 증분한다. 작업 바이트 카운트 레지스터의 값이 여전히 영(0)보다 크면, 다음 버퍼(101)의 전송 시에 이용하기 위해, 현재 버퍼(101)의 BCB(102)로부터 NBA값, SBP값, EBP값 및 TBUF값을 판독하여 작업 레지스터에 로드한다. 현재 버퍼(101)의 TBUF 비트가 설정되었으면, 그의 버퍼 어드레스를 프리 버퍼 큐의 테일에 밀어 넣음으로써 TBUF 비트를 폐기한다. 이어서, 작업 바이트 카운트 레지스터가 영(0)으로 감분될 때가지 단계 7을 반복한다.
단계 8. 프레임 전송 완료 후, 이전에 작업 레지스터에 기억된 기준 FCB 어드레스는 기준 FCB(501)의 NFA 필드에 기억된 기준 FCB(501)의 MCC 필드를 판독하는데 이용된다. 이어서, 다음의 2 개의 행동 중 하나를 수행한다.
● MCC값이 1보다 크면, 이 MCC값을 1 감분하고, 다시 기준 FCB(501)의 NFA 필드에 기록한다. 이어서, 이 멀티캐스트 상황의 전송을 완료한다. 그러나, 다른 멀티캐스트 상황이 전송을 완료하지 않았기 때문에 기준 프레임을 폐기할 수 없다.
● MCC값이 1이면, 기준 FCB(501)를 "폐기 큐(discard queue)"에 인큐 처리하여, 기준 프레임에 관련된 FCB 및 버퍼를 프리 큐에 복귀시킨다. 이어서, 멀티캐스트 프레임의 모든 상황의 전송을 완료한다.
스태틱(static) 프레임 전송도 역시 도 5에 적용된다. 스태틱 프레임 전송은, FCB 또는 버퍼를 프리 FCB 또는 버퍼 큐에 복귀시키지 않고 또한 기준 FCB(501)의 MCC값을 감분하지 않는다는 점을 제외하고 멀티캐스트 전송과 같다. 스태틱 프레임 전송은 나중에 재전송하기 위해서 프레임의 사본을 존속할 필요가 있는 경우에 사용된다. 도 5에 나타낸 각 프레임 상황은 (FCB의 타입 필드를 2진수 "01"로 설정하여 스태틱 프레임을 나타냄으로써) 1회 또는 그 이상 횟수로 스태틱 프레임으로서 전송될 수 있다. 마지막 시간에 하나의 프레임 상황을 전송하고 있는 경우, 이 프레임 상황은 (FCB의 타입 필드를 2진수 "11"로 설정하여 멀티캐스트 프레임을 나타냄으로써) 통상의 멀티캐스트 프레임으로서 전송된다. 따라서, 각 프레임 상황을 스태틱 프레임으로서 1회 내지 "N"회 전송한 후에 단일 전송을 통상의 멀티캐스트 프레임으로서 전송할 수 있다. 각 상황을 통상의 멀티캐스트 프레임으로서 전송한 경우에는, 기준 프레임으로부터의 기준 FCB(501) 및 버퍼를 프리 FCB와 버퍼 큐에 복귀시킨다. EPC 칩(209)에서 실행하는 피코코드 소프트웨어는 프레임 상황이 스태틱 프레임 또는 멀티캐스트 프레임으로서 전송되는 지를 판정한다.
데이터플로우 칩(202)은 "FACB를 갖는 유니캐스트"와 꼭 같은 스태틱 프레임을 전송한다. 다만, 한 가지 예외는 프레임의 FCB(103)와 버퍼(101)를 프리 큐에 복귀시키지 않는다는 점이다. 이어서, 데이터플로우 칩(202)은 프레임을 재전송하도록 동일한 FCB(103)을 지정하는 다른 인큐 동작을 발송할 수 있다. 스태틱(static) 프레임 타입값을 지정함으로써 프레임을 몇 회라도 재전송가능하다. 스태틱 프레임 타입은 유니캐스트 프레임 타입과 멀티캐스트 프레임 타입 중 어느 하나를 재전송할 수 있도록 적용 가능하다. 멀티캐스트의 예에서는, 스태틱 프레임의 경우에, TBUF 비트가 설정되어 있더라도 버퍼를 폐기하지 않도록 TBUF 변 수를 무시한다.
스태틱 프레임의 마지막 재전송을 수행한 경우에는, 이것을 타입 2진수 "00"(FACB를 갖는 유니캐스트) 또는 타입 2진수 "11"(멀티캐스트)로서 간단하게 인큐 처리한다. 이어서, 앞 절에서 설명한 바와 같이 프레임을 전송하고, FCB(103) 및 관련 버퍼(101)를 프리 큐에 복귀시킨다.
도 6은 본 발명의 양호한 실시예의 동작을 설명하기 위한 흐름도를 도시한다. 이 프로세스는 기능 블럭 601에서 시작하며, 여기서는, EPC(209)가 데이터플로우에 대한 크레디트를 발송하여 프레임을 EPC(209)로 디스패치시킨다. 이어서, 판정 블럭 602에서 프레임이 디스패치되었는 지를 판정한다. 프레임이 디스패치되지 않았다면, 프로세스는 기능 블럭 603에서 대기한다. 프레임이 디스패치된 경우에는, 기능 블럭 604에서, EPC(209)가 데이터플로우 칩으로부터 "N" 개의 프리 FCB 어드레스의 차용을 요구한다. 이어서, 판정 블럭 605에서 FCB 어드레스가 전송되었는 지를 판정한다. FBC 어드레스가 전송되지 않았다면, 프로세스는 기능 블럭 606에서 대기한다. FCB 어드레스가 전송된 경우에는, 기능 블럭 607에서, EPC(209)가 데이터플로우 칩(202)으로부터 "N" 개의 버퍼의 차용을 요구한다. 이어서, 판정 블럭 608에서 버퍼가 전송되었는 지를 판정한다. 버퍼가 전송되지 않았다면, 프로세서는 기능 블럭 609에서 대기한다. 버퍼가 전송된 경우에는, 기능 블럭 610에서, EPC(209)가 새로운 최초 버퍼(들)를 원래의 최초 버퍼(101)에 연결한다. 다음에, 기능 블럭 611에서, EPC(209)가 각각의 경우를 FACB(프레임 변경 제어 블럭) 정보와 함께 인큐 처리한다. 마지막으로, 기능 블럭 612에서, EPC(209)가 각 전송 패킷 마다 카운터를 업데이트하기 위해서 데이터플로우 칩(202)에 신호를 보낸다. EPC 칩(209)과 데이터플로우 칩(202)에도 유사한 프로세스가 적용된다. 여기서 개시한 플로우는 인그레스와 이그레스에도 동등하게 적용된다. 도 2에 도시한 바와 같이, 3 개의 주요 칩(EPC, 데이터플로우 및 스케쥴러)은 인그레스와 이그레스 모두에 사용되며, 데이터 흐름 방향만 다를 뿐이다. 인그레스와 이그레스 간에는 모든 기능, 예컨대 멀티캐스트가 똑같다.

Claims (10)

  1. 네트워크 프로세서의 멀티캐스트 전송 방법으로써,
    링크 리스트에 의해서 일체로 연결된 일련의 버퍼로 전송될 프레임을 기억하는 단계와,
    버퍼 제어 블럭을 각 버퍼와 관련짓는 단계와,
    프레임 제어 블럭을 각 프레임과 관련짓는 단계와,
    네트워크 프로세서에 의한 디스패치를 대기시키도록 복수의 프레임을 하나의 큐로 하여 수신하는 단계와,
    하나의 큐 제어 블럭을 전송될 프레임들의 큐와 관련짓는 단계와,
    각 멀티캐스트 목표마다 추가 버퍼들과 추가 프레임 제어 블럭들을 배정하고 이들 추가 프레임 제어 블럭을 상기 프레임에 관련된 원래의 프레임 제어 블럭과 링크시키는 단계와,
    상기 프레임이 각 멀티캐스트 목표에 전송된 시기를 판정하도록 멀티캐스트 카운터를 이용하는 단계와,
    상기 프레임이 각 목표에 전송될 때 각 멀티캐스트 목표에 배정된 버퍼들 및 프레임 제어 블럭들을 프리 큐들에 복귀시키는 단계와,
    상기 프레임이 모든 멀티캐스트 목표에 전송된 후에 상기 원래의 버퍼들 및 프레임 제어 블럭들을 상기 프리 큐들에 복귀시키는 단계
    를 구비하는 네트워크 프로세서의 멀티캐스트 전송 방법.
  2. 제1항에 있어서, 각 버퍼에 관련된 버퍼 제어 블럭은 하나의 프레임에 속하는 복수의 버퍼를 체인식으로 연결하기 위한 링크 리스트를 형성하고 복수의 필드를 포함하며,
    상기 복수의 필드는,
    상기 프레임 안에서의 다음 버퍼를 지시하는 포인터를 기억하는 필드와,
    최초 유효 데이터 바이트의 오프셋을 한 프레임의 다음 버퍼에 기억하는 필드와,
    최종 유효 데이터 바이트의 오프셋을 한 프레임의 다음 버퍼에 기억하는 필드와,
    상기 프레임 안의 다음 버퍼가 프리 버퍼 또는 프리 큐에 복귀되거나 멀티캐스트 전송을 계속하도록 지속되어야 하는 지를 나타내는 필드
    를 포함하는 것인 네트워크 프로세서의 멀티캐스트 전송 방법.
  3. 제1항에 있어서, 각 프레임에 관련된 프레임 제어 블럭은 하나의 큐에 속하는 복수의 프레임을 체인식으로 연결시키기 위한 링크 리스트를 형성하고 복수의 필드를 포함하며,
    상기 복수의 필드는,
    상기 큐 안에서의 다음 프레임을 지시하는 포인터를 기억하는 필드와,
    상기 큐 안에서의 다음 프레임의 총 바이트수의 카운트를 기억하는 필드와,
    한 프레임 안에서의 최초 버퍼의 어드레스를 기억하는 필드와,
    한 프레임의 최초 버퍼에 유효 데이터의 시작 바이트 위치를 기억하는 필드와,
    한 프레임의 최초 버퍼에 유효 데이터의 종료 바이트 위치를 기억하는 필드와,
    전송될 프레임의 포맷 및 타입에 관한 정보를 기억하는 필드
    를 포함하는 것인 네트워크 프로세서의 멀티캐스트 전송 방법.
  4. 제1항에 있어서, 상기 복수의 프레임을 하나의 큐로 하여 수신하는 단계는,
    상기 프리 버퍼 큐의 헤드로부터 프리 버퍼 어드레스를 팝(제거)하는 단계와,
    상기 프리 프레임 제어 블럭 큐의 헤드로부터 프리 프레임 제어 블럭을 팝(제거)하는 단계와,
    프레임 데이터를 상기 버퍼에 기록하는 단계와,
    최초 버퍼의 어드레스, 최초 버퍼 안의 유효 데이터에 대한 시작 바이트 위치 및 종료 바이트 위치를 포함하는 제어 정보를 상기 프레임 제어 블럭에 기록하는 단계와,
    작업 바이트 카운트 레지스터를 상기 최초 버퍼에 기록된 바이트수로 설정하는 단계와,
    전체 프레임을 버퍼에 기록할 때까지 이 프로세스를 반복하는 단계와,
    상기 네트워크 프로세서에 대한 디스패치를 대기시키도록 상기 프레임을 입력 큐의 테일에 추가하는 단계
    를 더 구비하는 것인 네트워크 프로세서의 멀티캐스트 전송 방법.
  5. 제1항에 있어서, 전송될 프레임들의 큐에 관련된 큐 제어 블럭은 복수의 필드를 포함하고,
    상기 복수의 필드는,
    상기 프레임에 관련된 프레임 제어 블럭의 어드레스를 상기 큐의 헤드에 기억하는 필드와,
    상기 프레임의 총 유효 바이트수의 카운트를 상기 큐의 선두부에 기억하는 필드와,
    상기 프레임에 관련된 프레임 제어 블럭의 어드레스를 상기 큐의 테일에 기억하는 필드
    를 포함하는 것인 네트워크 프로세서의 멀티캐스트 전송 방법.
  6. 컴퓨터 프로그램이 컴퓨터 시스템 상에서 수행될 때, 제1항 내지 제5항 중 어느 한 항에 기재된 상기 방법의 각 단계들을 수행하는데 적합한 프로그램 코드를 갖는 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체.
  7. 멀티캐스트 전송을 지원하는 네트워크 프로세서로써,
    링크 리스트에 의해서 일체로 연결된 일련의 버퍼로 전송될 프레임을 기억하는 수단과,
    버퍼 제어 블럭을 각 버퍼와 관련짓고 프레임 제어 블럭을 각 프레임과 관련짓는 수단과,
    디스패치를 대기시키도록 복수의 프레임을 하나의 큐로 하여 수신하는 수단과,
    하나의 큐 제어 블럭을 전송될 프레임들의 큐와 관련짓는 수단과,
    각 멀티캐스트 목표마다 추가 버퍼들과 추가 프레임 제어 블럭들을 배정하고 이들 추가 프레임 제어 블럭을 상기 프레임에 관련된 원래의 프레임 제어 블럭과 링크시키는 수단과,
    상기 프레임이 각 멀티캐스트 목표에 전송된 시기를 판정하도록 멀티캐스트 카운터를 이용하는 수단과,
    상기 프레임이 각 목표에 전송될 때 각 멀티캐스트 목표에 배정된 버퍼들 및 프레임 제어 블럭들을 프리 큐들에 복귀시키고, 상기 프레임이 모든 멀티캐스트 목표에 전송된 후에 상기 원래의 버퍼들 및 프레임 제어 블럭들을 상기 프리 큐들에 복귀시키는 수단
    을 구비하는 멀티캐스트 전송 지원 네트워크 프로세서.
  8. 제7항에 있어서, 각 버퍼에 관련된 버퍼 제어 블럭은 하나의 프레임에 속하는 복수의 버퍼를 체인식으로 연결하기 위한 링크 리스트를 형성하고 복수의 필드를 포함하며,
    상기 복수의 필드는,
    상기 프레임 안에서의 다음 버퍼를 지시하는 포인터를 기억하는 필드와,
    최초 유효 데이터 바이트의 오프셋을 한 프레임의 다음 버퍼에 기억하는 필드와,
    최종 유효 데이터 바이트의 오프셋을 한 프레임의 다음 버퍼에 기억하는 필드와,
    상기 프레임 안의 다음 버퍼가 상기 프리 버퍼 또는 큐에 복귀되거나 멀티캐스트 전송을 계속하도록 지속되어야 하는 지를 나타내는 필드
    를 포함하는 것인 멀티캐스트 전송 지원 네트워크 프로세서.
  9. 제7항에 있어서, 각 프레임에 관련된 프레임 제어 블럭은 하나의 큐에 속하는 복수의 프레임을 체인식으로 연결시키기 위한 링크 리스트를 형성하고 복수의 필드를 포함하며,
    상기 복수의 필드는,
    상기 큐 안에서의 다음 프레임을 지시하는 포인터를 기억하는 필드와,
    상기 큐 안에서의 다음 프레임의 총 바이트수의 카운트를 기억하는 필드와,
    한 프레임 안에서의 최초 프레임의 어드레스를 기억하는 필드와,
    한 프레임의 최초 버퍼에 유효 데이터의 시작 바이트 위치를 기억하는 필드와,
    한 프레임의 최초 버퍼에 유효 데이터의 종료 바이트 위치를 기억하는 필드와,
    전송될 프레임의 포맷 및 타입에 관한 정보를 기억하는 필드
    를 포함하는 것인 멀티캐스트 전송 지원 네트워크 프로세서.
  10. 제7항 내지 제9항 중 어느 한 항에 있어서, 상기 복수의 프레임을 하나의 큐로 수신하는 수단은,
    상기 프리 버퍼 큐의 헤드로부터 프리 버퍼 어드레스를 팝(제거)하는 수단과,
    상기 프리 프레임 제어 블럭 큐의 헤드로부터 프리 프레임 제어 블럭을 팝(제거)하는 수단과,
    프레임 데이터를 상기 버퍼에 기록하는 수단과,
    최초 버퍼 어드레스, 최초 버퍼 안의 유효 데이터에 대한 시작 바이트 위치 및 종료 바이트 위치를 포함하는 제어 정보를 상기 프레임 제어 블럭에 기록하는 수단과,
    작업 바이트 카운트 레지스터를 상기 최초 버퍼에 기록된 바이트수로 설정하는 수단과,
    전체 프레임을 버퍼에 기록한 것에 응답하여 상기 네트워크 프로세서에 대한 디스패치를 대기하도록 상기 프레임을 입력 큐의 테일에 추가하는 수단
    을 더 구비하는 것인 멀티캐스트 전송 지원 네트워크 프로세서.
KR1020037013729A 2001-04-20 2002-01-28 네트워크 프로세서의 멀티캐스트 전송 방법, 이 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체 및 멀티캐스트 전송 지원 네트워크 프로세서 KR100690418B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/839,079 2001-04-20
US09/839,079 US6836480B2 (en) 2001-04-20 2001-04-20 Data structures for efficient processing of multicast transmissions
PCT/GB2002/000383 WO2002087156A2 (en) 2001-04-20 2002-01-28 Method and device for multicast transmissions

Publications (2)

Publication Number Publication Date
KR20040002922A KR20040002922A (ko) 2004-01-07
KR100690418B1 true KR100690418B1 (ko) 2007-03-09

Family

ID=25278799

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037013729A KR100690418B1 (ko) 2001-04-20 2002-01-28 네트워크 프로세서의 멀티캐스트 전송 방법, 이 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체 및 멀티캐스트 전송 지원 네트워크 프로세서

Country Status (10)

Country Link
US (1) US6836480B2 (ko)
EP (1) EP1380133B1 (ko)
JP (1) JP3777161B2 (ko)
KR (1) KR100690418B1 (ko)
CN (1) CN1219384C (ko)
AT (1) ATE291802T1 (ko)
AU (1) AU2002225237A1 (ko)
DE (1) DE60203380T2 (ko)
TW (1) TW573413B (ko)
WO (1) WO2002087156A2 (ko)

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6937606B2 (en) * 2001-04-20 2005-08-30 International Business Machines Corporation Data structures for efficient processing of IP fragmentation and reassembly
US7167471B2 (en) * 2001-08-28 2007-01-23 International Business Machines Corporation Network processor with single interface supporting tree search engine and CAM
US7206310B1 (en) * 2001-12-28 2007-04-17 Redback Networks Inc. Method and apparatus for replicating packet data with a network element
AU2003216165A1 (en) * 2002-02-04 2003-09-02 Intel Corporation System and method for packet storage and retrieval
US7680043B2 (en) * 2002-03-20 2010-03-16 International Business Machines Corporation Network processor having fast flow queue disable process
US7230922B1 (en) * 2002-04-05 2007-06-12 Cingular Wireless Ii, Llc Real-time rate control mechanism for multi-rate data transmissions in wireless networks
US7685008B2 (en) * 2004-02-20 2010-03-23 Accenture Global Services Gmbh Account level participation for underwriting components
EP1740945B1 (en) * 2004-04-07 2018-09-19 Ncardia AG Non-invasive, in vitro functional tissue assay systems
US7940764B2 (en) * 2004-08-12 2011-05-10 Intel Corporation Method and system for processing multicast packets
US20060187963A1 (en) * 2005-02-18 2006-08-24 International Business Machines Corporation Method for sharing single data buffer by several packets
US7466715B2 (en) * 2005-03-28 2008-12-16 International Business Machines Corporation Flexible control block format for frame description and management
US7474662B2 (en) * 2005-04-29 2009-01-06 International Business Machines Corporation Systems and methods for rate-limited weighted best effort scheduling
KR100717239B1 (ko) * 2005-06-22 2007-05-11 엔에이치엔(주) 동일한 멀티캐스트 그룹에 속하는 구성원 서버들 간의신뢰성 있는 통신을 제공하기 위한 방법 및 장치
TWI269972B (en) * 2005-10-21 2007-01-01 Ind Tech Res Inst Method for releasing data of storage apparatus
US7945816B1 (en) 2005-11-30 2011-05-17 At&T Intellectual Property Ii, L.P. Comprehensive end-to-end storage area network (SAN) application transport service
US7779016B2 (en) * 2006-09-14 2010-08-17 International Business Machines Corporation Parallel execution of operations for a partitioned binary radix tree on a parallel computer
US8713582B2 (en) * 2006-10-26 2014-04-29 International Business Machines Corporation Providing policy-based operating system services in an operating system on a computing system
US8656448B2 (en) * 2006-10-26 2014-02-18 International Business Machines Corporation Providing policy-based application services to an application running on a computing system
US8032899B2 (en) 2006-10-26 2011-10-04 International Business Machines Corporation Providing policy-based operating system services in a hypervisor on a computing system
US20080273678A1 (en) 2007-05-01 2008-11-06 Igor Balk Systems and methods for phone call management
US7286661B1 (en) 2007-05-01 2007-10-23 Unison Technologies Llc Systems and methods for scalable hunt-group management
US20080285736A1 (en) 2007-05-16 2008-11-20 Unison Technolgies Llc Systems and methods for providing unified collaboration systems with conditional communication handling
US20080285588A1 (en) 2007-05-16 2008-11-20 Unison Technologies Llc Systems and methods for providing unified collaboration systems with combined communication log
US7958274B2 (en) * 2007-06-18 2011-06-07 International Business Machines Corporation Heuristic status polling
US8296430B2 (en) 2007-06-18 2012-10-23 International Business Machines Corporation Administering an epoch initiated for remote memory access
US9065839B2 (en) 2007-10-02 2015-06-23 International Business Machines Corporation Minimally buffered data transfers between nodes in a data communications network
US7984450B2 (en) * 2007-11-28 2011-07-19 International Business Machines Corporation Dispatching packets on a global combining network of a parallel computer
US8127235B2 (en) 2007-11-30 2012-02-28 International Business Machines Corporation Automatic increasing of capacity of a virtual space in a virtual world
CN101453485B (zh) * 2007-12-07 2011-12-07 英业达股份有限公司 使用多播数据流进行数据传输及写入的方法
US20090164919A1 (en) 2007-12-24 2009-06-25 Cary Lee Bates Generating data for managing encounters in a virtual world environment
CN101489184B (zh) * 2008-01-14 2010-12-08 华为技术有限公司 区分小区内子帧状态的方法、装置以及系统
CN101222344B (zh) * 2008-01-23 2010-12-29 中兴通讯股份有限公司 文件组播传输方法和系统
JP5159375B2 (ja) 2008-03-07 2013-03-06 インターナショナル・ビジネス・マシーンズ・コーポレーション メタバースにおけるオブジェクトの真贋判断システム、方法及びそのコンピュータ・プログラム
US7895260B2 (en) * 2008-07-28 2011-02-22 International Business Machines Corporation Processing data access requests among a plurality of compute nodes
KR101326983B1 (ko) * 2009-12-21 2014-01-15 한국전자통신연구원 트래픽 제어 장치 및 방법
US9205328B2 (en) 2010-02-18 2015-12-08 Activision Publishing, Inc. Videogame system and method that enables characters to earn virtual fans by completing secondary objectives
US8365186B2 (en) 2010-04-14 2013-01-29 International Business Machines Corporation Runtime optimization of an application executing on a parallel computer
US9682324B2 (en) 2010-05-12 2017-06-20 Activision Publishing, Inc. System and method for enabling players to participate in asynchronous, competitive challenges
US8504730B2 (en) 2010-07-30 2013-08-06 International Business Machines Corporation Administering connection identifiers for collective operations in a parallel computer
CN102377576B (zh) * 2010-08-06 2014-09-17 高通创锐讯通讯科技(上海)有限公司 多播的实现方法
US8565120B2 (en) 2011-01-05 2013-10-22 International Business Machines Corporation Locality mapping in a distributed processing system
US9317637B2 (en) 2011-01-14 2016-04-19 International Business Machines Corporation Distributed hardware device simulation
US8689228B2 (en) 2011-07-19 2014-04-01 International Business Machines Corporation Identifying data communications algorithms of all other tasks in a single collective operation in a distributed processing system
CN102281192B (zh) * 2011-07-19 2017-09-29 中兴通讯股份有限公司 交换网络芯片的信元处理方法及装置
US9250948B2 (en) 2011-09-13 2016-02-02 International Business Machines Corporation Establishing a group of endpoints in a parallel computer
US10137376B2 (en) 2012-12-31 2018-11-27 Activision Publishing, Inc. System and method for creating and streaming augmented game sessions
US10376792B2 (en) 2014-07-03 2019-08-13 Activision Publishing, Inc. Group composition matchmaking system and method for multiplayer video games
US11351466B2 (en) 2014-12-05 2022-06-07 Activision Publishing, Ing. System and method for customizing a replay of one or more game events in a video game
US10118099B2 (en) 2014-12-16 2018-11-06 Activision Publishing, Inc. System and method for transparently styling non-player characters in a multiplayer video game
US10486068B2 (en) 2015-05-14 2019-11-26 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
US10286314B2 (en) 2015-05-14 2019-05-14 Activision Publishing, Inc. System and method for providing continuous gameplay in a multiplayer video game through an unbounded gameplay session
US10315113B2 (en) 2015-05-14 2019-06-11 Activision Publishing, Inc. System and method for simulating gameplay of nonplayer characters distributed across networked end user devices
US10668367B2 (en) 2015-06-15 2020-06-02 Activision Publishing, Inc. System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game
US10471348B2 (en) 2015-07-24 2019-11-12 Activision Publishing, Inc. System and method for creating and sharing customized video game weapon configurations in multiplayer video games via one or more social networks
US11185784B2 (en) 2015-10-08 2021-11-30 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US10099140B2 (en) 2015-10-08 2018-10-16 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US10376781B2 (en) 2015-10-21 2019-08-13 Activision Publishing, Inc. System and method of generating and distributing video game streams
US10245509B2 (en) 2015-10-21 2019-04-02 Activision Publishing, Inc. System and method of inferring user interest in different aspects of video game streams
US10232272B2 (en) 2015-10-21 2019-03-19 Activision Publishing, Inc. System and method for replaying video game streams
US10694352B2 (en) 2015-10-28 2020-06-23 Activision Publishing, Inc. System and method of using physical objects to control software access
CN105471837A (zh) * 2015-11-09 2016-04-06 北京捷思锐科技股份有限公司 信息处理方法及装置
US10300390B2 (en) 2016-04-01 2019-05-28 Activision Publishing, Inc. System and method of automatically annotating gameplay of a video game based on triggering events
US10226701B2 (en) 2016-04-29 2019-03-12 Activision Publishing, Inc. System and method for identifying spawn locations in a video game
US10179289B2 (en) 2016-06-21 2019-01-15 Activision Publishing, Inc. System and method for reading graphically-encoded identifiers from physical trading cards through image-based template matching
US10573065B2 (en) 2016-07-29 2020-02-25 Activision Publishing, Inc. Systems and methods for automating the personalization of blendshape rigs based on performance capture data
US10709981B2 (en) 2016-11-17 2020-07-14 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps
US10463964B2 (en) 2016-11-17 2019-11-05 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible heatmaps
US10500498B2 (en) 2016-11-29 2019-12-10 Activision Publishing, Inc. System and method for optimizing virtual games
US10055880B2 (en) 2016-12-06 2018-08-21 Activision Publishing, Inc. Methods and systems to modify a two dimensional facial image to increase dimensional depth and generate a facial image that appears three dimensional
US10861079B2 (en) 2017-02-23 2020-12-08 Activision Publishing, Inc. Flexible online pre-ordering system for media
CN108989840B (zh) * 2017-06-02 2020-10-16 上海数字电视国家工程研究中心有限公司 适用于高速运动接收的数据帧的设计方法和传输系统
US10818060B2 (en) 2017-09-05 2020-10-27 Activision Publishing, Inc. Systems and methods for guiding motion capture actors using a motion reference system
US11040286B2 (en) 2017-09-27 2021-06-22 Activision Publishing, Inc. Methods and systems for improved content generation in multiplayer gaming environments
US10561945B2 (en) 2017-09-27 2020-02-18 Activision Publishing, Inc. Methods and systems for incentivizing team cooperation in multiplayer gaming environments
US10974150B2 (en) 2017-09-27 2021-04-13 Activision Publishing, Inc. Methods and systems for improved content customization in multiplayer gaming environments
US10537809B2 (en) 2017-12-06 2020-01-21 Activision Publishing, Inc. System and method for validating video gaming data
US10463971B2 (en) 2017-12-06 2019-11-05 Activision Publishing, Inc. System and method for validating video gaming data
US10981051B2 (en) 2017-12-19 2021-04-20 Activision Publishing, Inc. Synchronized, fully programmable game controllers
US11278813B2 (en) 2017-12-22 2022-03-22 Activision Publishing, Inc. Systems and methods for enabling audience participation in bonus game play sessions
US10596471B2 (en) 2017-12-22 2020-03-24 Activision Publishing, Inc. Systems and methods for enabling audience participation in multi-player video game play sessions
US10765948B2 (en) 2017-12-22 2020-09-08 Activision Publishing, Inc. Video game content aggregation, normalization, and publication systems and methods
US11263670B2 (en) 2018-11-19 2022-03-01 Activision Publishing, Inc. Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user
US11192028B2 (en) 2018-11-19 2021-12-07 Activision Publishing, Inc. Systems and methods for the real-time customization of video game content based on player data
US20200196011A1 (en) 2018-12-15 2020-06-18 Activision Publishing, Inc. Systems and Methods for Receiving Digital Media and Classifying, Labeling and Searching Offensive Content Within Digital Media
US11679330B2 (en) 2018-12-18 2023-06-20 Activision Publishing, Inc. Systems and methods for generating improved non-player characters
US11305191B2 (en) 2018-12-20 2022-04-19 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11344808B2 (en) 2019-06-28 2022-05-31 Activision Publishing, Inc. Systems and methods for dynamically generating and modulating music based on gaming events, player profiles and/or player reactions
US11097193B2 (en) 2019-09-11 2021-08-24 Activision Publishing, Inc. Methods and systems for increasing player engagement in multiplayer gaming environments
US11423605B2 (en) 2019-11-01 2022-08-23 Activision Publishing, Inc. Systems and methods for remastering a game space while maintaining the underlying game simulation
US11712627B2 (en) 2019-11-08 2023-08-01 Activision Publishing, Inc. System and method for providing conditional access to virtual gaming items
US11537209B2 (en) 2019-12-17 2022-12-27 Activision Publishing, Inc. Systems and methods for guiding actors using a motion capture reference system
US11420122B2 (en) 2019-12-23 2022-08-23 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11563774B2 (en) 2019-12-27 2023-01-24 Activision Publishing, Inc. Systems and methods for tracking and identifying phishing website authors
US11524234B2 (en) 2020-08-18 2022-12-13 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically modified fields of view
US11351459B2 (en) 2020-08-18 2022-06-07 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically generated attribute profiles unconstrained by predefined discrete values
US11724188B2 (en) 2020-09-29 2023-08-15 Activision Publishing, Inc. Methods and systems for selecting a level of detail visual asset during the execution of a video game
US11717753B2 (en) 2020-09-29 2023-08-08 Activision Publishing, Inc. Methods and systems for generating modified level of detail visual assets in a video game
US11833423B2 (en) 2020-09-29 2023-12-05 Activision Publishing, Inc. Methods and systems for generating level of detail visual assets in a video game
US11439904B2 (en) 2020-11-11 2022-09-13 Activision Publishing, Inc. Systems and methods for imparting dynamic and realistic movement to player-controlled avatars in video games
US11853439B2 (en) 2020-12-30 2023-12-26 Activision Publishing, Inc. Distributed data storage system providing enhanced security
US11794107B2 (en) 2020-12-30 2023-10-24 Activision Publishing, Inc. Systems and methods for improved collision detection in video games
CN115378887B (zh) * 2022-07-05 2024-01-23 西安电子科技大学 一种时间触发以太网交换机tt业务交换装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3850881T2 (de) * 1988-10-28 1995-03-09 Ibm Verfahren und Vorrichtung zur Nachrichtenübertragung zwischen Quellen- und Zielanwender durch einen anteilig genutzten Speicher.
DE69329709D1 (de) * 1993-04-29 2001-01-04 Ibm Verfahren und Gerät für Mehrfachübertragung von Daten in einem Kommunikationssystem
JP3486946B2 (ja) 1994-03-16 2004-01-13 富士通株式会社 マルチキャスト通信中継装置
US5684797A (en) * 1995-04-05 1997-11-04 International Business Machines Corporation ATM cell multicasting method and apparatus
US5925099A (en) * 1995-06-15 1999-07-20 Intel Corporation Method and apparatus for transporting messages between processors in a multiple processor system
JP2842522B2 (ja) * 1995-12-06 1999-01-06 日本電気株式会社 Atmスイッチ及びその制御方法
US5689506A (en) * 1996-01-16 1997-11-18 Lucent Technologies Inc. Multicast routing in multistage networks
US5898687A (en) * 1996-07-24 1999-04-27 Cisco Systems, Inc. Arbitration mechanism for a multicast logic engine of a switching fabric circuit
US6094435A (en) * 1997-06-30 2000-07-25 Sun Microsystems, Inc. System and method for a quality of service in a multi-layer network element
US6111880A (en) * 1997-12-05 2000-08-29 Whittaker Corporation Hybrid packet/cell switching, linking, and control system and methodology for sharing a common internal cell format

Also Published As

Publication number Publication date
DE60203380T2 (de) 2006-02-02
AU2002225237A1 (en) 2002-11-05
JP2004524781A (ja) 2004-08-12
JP3777161B2 (ja) 2006-05-24
EP1380133A2 (en) 2004-01-14
CN1219384C (zh) 2005-09-14
EP1380133B1 (en) 2005-03-23
DE60203380D1 (de) 2005-04-28
ATE291802T1 (de) 2005-04-15
WO2002087156A2 (en) 2002-10-31
TW573413B (en) 2004-01-21
US6836480B2 (en) 2004-12-28
KR20040002922A (ko) 2004-01-07
US20020154634A1 (en) 2002-10-24
CN1498480A (zh) 2004-05-19
WO2002087156A3 (en) 2002-12-19

Similar Documents

Publication Publication Date Title
KR100690418B1 (ko) 네트워크 프로세서의 멀티캐스트 전송 방법, 이 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체 및 멀티캐스트 전송 지원 네트워크 프로세서
US6937606B2 (en) Data structures for efficient processing of IP fragmentation and reassembly
US11709702B2 (en) Work conserving, load balancing, and scheduling
US6504846B1 (en) Method and apparatus for reclaiming buffers using a single buffer bit
US9864633B2 (en) Network processor having multicasting protocol
US7792027B2 (en) Pipelined packet switching and queuing architecture
US7843816B1 (en) Systems and methods for limiting low priority traffic from blocking high priority traffic
TWI482460B (zh) 網路處理器單元及其相關方法
USRE38821E1 (en) Switching ethernet controller
US11750526B2 (en) Using stateful traffic management data to perform packet processing
US7433364B2 (en) Method for optimizing queuing performance
WO2001004770A2 (en) Method and architecture for optimizing data throughput in a multi-processor environment using a ram-based shared index fifo linked list
US6850999B1 (en) Coherency coverage of data across multiple packets varying in sizes
US20060187963A1 (en) Method for sharing single data buffer by several packets
US9699107B2 (en) Packet engine that uses PPI addressing

Legal Events

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

Payment date: 20130220

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140211

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150209

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160211

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170222

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180209

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190213

Year of fee payment: 13