KR20070085272A - Rx fifo 버퍼를 사용하여 고속 네트워크애플리케이션에서 rx 패킷을 프로세싱하는 시스템 및방법 - Google Patents

Rx fifo 버퍼를 사용하여 고속 네트워크애플리케이션에서 rx 패킷을 프로세싱하는 시스템 및방법 Download PDF

Info

Publication number
KR20070085272A
KR20070085272A KR1020077008944A KR20077008944A KR20070085272A KR 20070085272 A KR20070085272 A KR 20070085272A KR 1020077008944 A KR1020077008944 A KR 1020077008944A KR 20077008944 A KR20077008944 A KR 20077008944A KR 20070085272 A KR20070085272 A KR 20070085272A
Authority
KR
South Korea
Prior art keywords
packet
processing
data
packets
tcp
Prior art date
Application number
KR1020077008944A
Other languages
English (en)
Other versions
KR101018575B1 (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 KR20070085272A publication Critical patent/KR20070085272A/ko
Application granted granted Critical
Publication of KR101018575B1 publication Critical patent/KR101018575B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

네트워크를 통해 수신되는 패킷을 프로세싱하는 시스템 및 방법을 제공한다. 일반적인 사용에서, 데이터 패킷 및 제어 패킷은 네트워크를 통해 수신된다. 또한 데이터 패킷은 제어 패킷과 병렬로 프로세싱된다.
TOE, 전송 오프로드 엔진, FIFO 버퍼, TCP, 병렬 프로세싱

Description

RX FIFO 버퍼를 사용하여 고속 네트워크 애플리케이션에서 RX 패킷을 프로세싱하는 시스템 및 방법{SYSTEM AND METHOD FOR PROCESSING RX PACKETS IN HIGH SPEED NETWORK APPLICATIONS USING AN RX FIFO BUFFER}
본 발명의 기술분야
본 발명은 네트워크 통신에 관한 것으로, 더 상세하게는 수신 (RX) 패킷의 프로세싱에 관한 것이다.
발명의 배경
전송 오프로드 엔진 (transport offload engine; TOE) 은 스루풋을 최적화하고, 프로세서 사용률을 줄이기 위해 고속 시스템에서 널리 사용되고 있는 기술을 포함한다. TOE 컴포넌트는 종종 네트워크 인터페이스 카드 (NIC), 호스트 버스 어댑터 (HBA), 머더보드와 같은 다양한 인쇄 회로 기판 중 하나에 또는 원하는 임의의 다른 오프로딩 콘텍스트에 포함된다.
최근 몇 년간, 시스템에서의 통신 속도는 프로세서의 속도보다 더 신속하게 증가하였다. 이것은 입출력 (I/O) 병목을 생성하였다. 통상적으로, I/O 가 아닌 연산용으로 주로 설계된 프로세서는 네트워크를 통해 흐르는 데이터를 따라잡을 수 없다. 결과적으로, 데이터 흐름은 네트워크 속도보다 더 느린 레이트로 프로세싱된다. TOE 기술은 프로세서 및/또는 I/O 서브시스템으로부터의 부담을 제거함으로써 (즉, 오프로딩함으로써) 이 문제를 해결한다.
종종 TOE 로 오프로딩되는 프로세싱의 하나의 타입은 전송 제어 프로토콜 (TCP) 패킷 프로세싱을 포함한다. TCP 는 인터넷 프로토콜 (IP) 과 함께 사용되는 규정 세트 (프로토콜) 이며, 인터넷을 통해 컴퓨터 사이에서 메시지 단위 형태로 데이터를 전송한다. IP 는 데이터의 실제 전달을 처리하는 것을 담당하고, TCP 는 인터넷을 통해 효율적으로 라우팅하기 위해 메시지가 분할된 각각의 패킷을 추적하는 것을 담당한다.
고속 네트워크 상에서 TCP 패킷을 처리하는 것은 많은 프로세싱을 요구한다. 패킷은 아웃-오브-시퀀스로 도달할 수도 있으며, 따라서 데이터가 인-시퀀스로 애플리케이션데 전달되려면, 그 패킷은 저장되어야 한다. 또한, 수신 패킷의 프로세싱은 네트워크 접속의 라인 레이트 (line rate) 를 따라잡을 수 있어야만 한다.
따라서, TCP 및 다른 패킷 프로세싱을 가속하는 기술이 필요하다.
발명의 요약
네트워크를 통해 수신되는 패킷을 프로세싱하는 시스템 및 방법을 제공한다. 일반적인 사용에서, 데이터 패킷 및 제어 패킷은 네트워크를 통해 수신된다. 또한 데이터 패킷은 제어 패킷과 병렬로 프로세싱된다.
일 실시형태에 있어서, 제어 패킷은 제 1 프로세싱 경로를 사용하여 프로세싱될 수도 있으며, 데이터 패킷은 제 1 프로세싱 경로와는 별도의 제 2 프로세싱 경로를 사용하여 프로세싱될 수도 있다.
다른 실시형태에 있어서, 패킷의 프로세싱은 패킷과 연관되는 정확한 소켓 제어 블록을 식별하기 위해 탐색표 (look-up table) 와 캐시를 병렬로 사용하는 것을 포함할 수도 있다. 유사하게, 데이터 패킷의 프로세싱은 패킷과 연관되는 정확한 소켓 제어 블록을 식별하기 위해 실질적인 이중 로직 (duplicate logic) 을 병렬로 사용하는 것을 포함할 수도 있다.
또 다른 실시형태에 있어서, 패킷과 연관되는 제어 블록은 후속 패킷의 프로세싱과 동시에 업데이트될 수도 있다.
추가적인 옵션으로서, 태그 정보가 데이터 패킷에 프리펜딩될 (prepended) 수도 있다. 이런 태그 정보는 수신기 (RX) 선입선출 (FIFO) 버퍼에서 버퍼링되는 동안에 데이터 패킷에 더 프리펜딩될 수도 있다. 선택적으로, 태그 정보는 대응 패킷의 타입, 대응 패킷에 연관되는 소켓 처리, 대응 패킷과 연관되는 상태 정보, 및/또는 대응 패킷과 연관되는 제어 정보를 포함할 수도 있다.
일반적인 사용에서, 데이터 패킷은 RX FIFO 버퍼를 사용하여 버퍼링될 수도 있다.
도면의 간단한 설명
도 1 은 일 실시형태에 따른 네트워크 시스템을 나타낸다.
도 2 는 일 실시형태가 구현될 수도 있는 아키텍처를 나타낸다.
도 3 은 일 실시형태에 따른, 수신 패킷을 프로세싱하는 아키텍처의 특정 실시예를 나타낸다.
도 4 는 일 실시형태에 따른, 수신 패킷을 프로세싱하는 예시적인 전단 (front-end) 모듈을 나타낸다.
도 5 는 일 실시형태에 따른, 수신 패킷을 프로세싱하는 예시적인 수신기 후단 (back-end) 모듈을 나타낸다.
도 6 은 일 실시형태에 따른, 수신 패킷을 프로세싱하는 예시적인 전단 방법을 나타낸다.
도 7 은 일 실시형태에 따른, 수신 패킷을 프로세싱하는 예시적인 후단 방법을 나타낸다.
도 8 은 일 실시형태에 따른, 수신 제어 패킷을 프로세싱하는 예시적인 제어 패킷 프로세싱 방법을 나타낸다.
발명의 상세한 설명
도 1 은 일 실시형태에 따른 네트워크 시스템 (100) 을 나타낸다. 도시된 바와 같이, 네트워크 (102) 가 제공된다. 이 네트워크 시스템 (100) 의 콘텍스트에서, 네트워크 (102) 는 로컬 영역 네트워크 (LAN), 및 인터넷 등과 같은 광역 네트워크 (WAN) 를 포함하지만 이에 제한되지 않고, 임의의 형태를 취할 수도 있다.
네트워크 (102) 를 통해 통신할 수 있는 로컬 호스트 (104) 및 원격 호스트 (106) 가 네트워크 (102) 에 연결된다. 이 설명의 콘텍스트에서, 이런 호스트 (104, 106) 는 웹서버, 저장 디바이스 또는 서버, 데스크탑 컴퓨터, 랩탑 컴퓨터, 휴대용 컴퓨터, 프린터 또는 임의의 다른 타입의 하드웨어/소프트웨어를 포함할 수도 있다. 임의의 다른 예시되지 않은 디바이스 뿐 아니라 전술한 컴포넌트 각각은 하나 이상의 네트워크를 경유하여 상호 접속될 수도 있다.
도 2 는 일 실시형태가 구현될 수도 있는 예시적인 아키텍처 (200) 를 나타낸다. 일 실시형태에 있어서, 아키텍처 (200) 는 도 1 의 호스트 (104, 106) 중 하나를 나타낼 수도 있다. 그러나, 물론, 아키텍처 (200) 는 임의의 원하는 콘텍스트에서 구현될 수도 있다.
예를 들어, 아키텍처 (200) 는 일반적인 컴퓨터 시스템, 회로 기판 시스템, 오락 전용 게임 콘솔 시스템, 셋-탑 박스, 라우터, 네트워크 시스템, 저장 시스템, 애플리케이션-특정 시스템, 또는 네트워크 (102) 와 연관되는 임의의 다른 원하는 시스템에서 구현될 수도 있다.
도시된 바와 같이, 아키텍처 (200) 는 버스 (202) 를 통해 연결되는 복수의 컴포넌트를 포함한다. 데이터를 프로세싱하는 하나 이상의 프로세서 (204) 가 포함된다. 프로세서 (204) 는 임의의 형태를 취할 수도 있으며, 일 실시형태에 있어서 중앙 프로세싱 유닛 (CPU), 그래픽 모듈, 칩셋 (즉, 관련 기능을 수행하는 유닛으로서 동작하도록 설계되거나 판매되는 집적 회로 그룹 등), 이들의 조합물, 또는 임의의 다른 해당 집적 회로의 형태를 취할 수도 있다. 그래픽 모듈의 예에서, 이런 집적 회로는 변환 모듈, 발광 모듈, 및 래스터화 모듈을 포함할 수도 있다. 각각의 전술한 모듈은 그래픽 프로세싱 유닛 (GPU) 을 형성하기 위해 단일 반도체 플랫폼 상에 위치될 수도 있다.
데이터를 저장하기 위해 프로세서 (204) 와 통신하면서 상주하는 프로세서 시스템 메모리 (206) 가 더 포함된다. 이런 프로세서 시스템 메모리 (206) 는 온-보드 또는 오프-보드 랜덤 액세스 메모리 (RAM), 하드 디스크 드라이브, 착탈형 저장 드라이드 (즉, 플로피 디스크 드라이브, 자기 테이프 드라이브, 컴팩트 디스크 드라이브 등), 및/또는 임의의 다른 타입의 원하는 데이터 저장 가능 메모리의 형태를 취할 수도 있다.
일반적인 사용에서, 프로그램 또는 제어 로직 알고리즘은 프로세서 시스템 메모리 (206) 에 선택적으로 저장될 수도 있다. 이런 프로그램은, 실행되는 경우, 아키텍처 (200) 가 다양한 기능을 수행하게 할 수 있다. 물론, 아키텍처 (200) 는 간단히 하드 와이어드 게이트-레벨 회로에서 직접 구현될 수도 있다.
또한, 프로세서 (204) 및 네트워크 (예를 들어, 도 1 의 네트워크 (102) 참조) 와 통신하는 전송 오프로드 엔진 (212) 이 도시되어 있다. 일 실시형태에 있어서, 전송 오프로드 엔진 (212) 은 버스 (202) 를 통해 프로세서 (204) 와의 통신 상태를 유지할 수도 있다. 그러나, 물론, 전송 오프로드 엔진 (212) 은 통신을 제공하는 임의의 메커니즘을 통해 프로세서 (204) 와의 통신 상태를 유지할 수도 있다. 전송 오프로드 엔진 (212) 은 전송 (즉, TCP/IP) 오프로드 엔진 (TOE), 시스템, 또는 네트워크에서 전송되는 데이터를 관리할 수 있는 임의의 집적 회로를 포함할 수도 있다.
전술한 컴포넌트 간의 통신을 제공하는 단일 버스 (202) 가 도시되어 있지만, 임의의 수의 버스 (또는 다른 통신 메커니즘) 가 컴포넌트 간의 통신을 제공하도록 사용될 수도 있다. 단지 예로써, 추가적인 버스가 프로세서 (204) 와 프로세서 시스템 메모리 (206) 간의 통신을 제공하도록 사용될 수도 있다. 또한, 일 실시형태에 있어서, 도 2 에 도시된 임의의 2 개 이상의 컴포넌트가 단일 집적 회로 상에 집적될 수도 있다.
동작하는 동안에, 전송 오프로드 엔진 (212), 프로세서 (204) 및/또는 소프트웨어는 네트워크 (즉, 예를 들어, 도 1 의 네트워크 (102) 등을 참조) 를 통해 수신되는 패킷을 프로세싱하도록 동작한다. 일 실시형태에 의하면, 데이터 패킷 및 제어 패킷이 네트워크를 통해 수신된다. 또한, 데이터 패킷은 제어 패킷의 프로세싱과 병렬로 프로세싱된다.
이 설명의 콘텍스트에서, "데이터 패킷" 은 데이터를 통신하는데 사용되는 임의의 패킷을 지칭할 수도 있으며, "제어 패킷" 은 네트워크 통신을 통한 임의의 양태의 제어를 나타내는 임의의 패킷을 지칭할 수도 있다. 또한, "병렬" 은 임의의 양태의 데이터 패킷 및 제어 패킷을 적어도 부분적으로 동시에 프로세싱하는 프로세싱을 지칭할 수도 있다. 이 때문에, 수신 패킷 프로세싱이 향상된다.
또 다른 실시형태에 있어서, 패킷의 프로세싱은 패킷과 연관되는 정확한 소켓 제어 블록 (CB) 을 식별하기 위해, 실질적인 이중 로직 및/또는 다중 데이터 구조 (즉, 탐색표 및 캐시 등) 를 병렬로 사용하는 단계를 포함할 수도 있다. 옵션으로서, 이런 탐색 모드 동안에 (즉, 이런 CB 가 식별되는 경우에), 정확한 소켓 제어 블록이 캐시 내에 존재하지 않는다면, 정확한 소켓 제어 블록은 메인 메모리로부터 취출될 수도 있으며, 취출된 정확한 소켓 제어 블록은 탐색 모드에서 캐시 내에 저장되지 않는다. 이 설명의 콘텍스트에서, CB 는 접속 시도 및/또는 접속을 추적하는데 사용될 수 있는 임의의 정보를 포함할 수도 있다.
CB 를 최초로 정확히 식별한 데이터 구조의 식별 결과를 사용함으로써, 전술 한 식별 프로세스는 가속된다. 또한, 실질적인 이중 로직을 사용함으로써, CB 식별 프로세스는 다수의 패킷에 관해 동시에 수행될 수도 있으며, 따라서, 추가 가속을 제공한다.
또 다른 옵션으로서, 태그 정보가 패킷 (즉, 데이터 패킷 및/또는 제어 패킷 등) 에 프리펜딩될 수도 있다. 이런 태그 정보는, 수신기 (RX) 선입선출 (FIFO) 버퍼에서 버퍼링되는 동안에 패킷에, 더 프리펜딩될 수도 있다. 태그 정보를 프리펜딩함으로써 수신 패킷은 전술한 CB 식별이 수행되는 동안에 저장될 수도 있다. 또한, 옵션으로서, 태그 정보에 관해 별도의 버퍼가 필요없을 수도 있다.
또 다른 실시형태에 있어서, 추가 패킷이 수신됨에 따라, CB 는 업데이트될 수도 있다. 따라서, 일반적인 사용에서, 제 1 패킷과 연관되는 CB 가 업데이트될 수도 있다. 또한, 적어도 제 1 패킷과 연관되는 CB 의 업데이트를 시작한 후 및 업데이트를 완료하기 전에, 제 2 패킷의 프로세싱이 시작될 수도 있으며, 따라서, 성능이 향상된다. 이 때문에, 패킷 프로세싱은 CB 업데이트와 병렬로 수행될 수도 있으며, 따라서, 다른 프로세스에서는 병목을 생성하는 프로세스 중 하나에서 병목 확률을 감소시킬 수 있다.
더 많은 선택적 특징 및 예시적인 구현 세부 설명이 상술한 실시형태에 관해 개시될 것이다. 다음의 세부 설명은 단지 예시적인 목적으로 개시된 것이고, 임의의 방법으로 제한하는 것으로써 해석되어야 한다.
도 3 은 일 실시형태에 따른, 수신 패킷을 프로세싱하는 예시적인 아키텍처 (300) 를 나타낸다. 옵션으로서, 아키텍처 (300) 는 도 2 의 예시적인 아키텍처 (200) 의 콘텍스트에서 구현될 수도 있다. 그러나, 물론, 아키텍처 (300) 는 임의의 원하는 콘텍스트에서 구현될 수도 있다.
도시된 바와 같이, 복수의 네트워크 (102) 로부터의 데이터 패킷 및 제어 패킷 모두를 수신하는 복수의 미디어 액세스 제어 (MAC) RX 버퍼 (302) 가 제공된다. RX 버퍼 (302) 는 반드시 복수의 네트워크 (102) 를 위한 것은 아니다. 일 실시형태는 단일 네트워크를 위한 하나의 버퍼를 포함할 수도 있다. 이런 MAC RX 버퍼 (302) 는 인터넷 프로토콜 (IP) RX (310) 및 예외 처리기 (exception handler; 314) 모두에 차례로 연결되는 이더넷 RX (306) 에 연결된다. 모든 IP 패킷은 IP RX (310) 로 전송되고, 다른 모든 패킷은 예외 처리기 (314) 로 전송된다.
IP RX (310) 내에서 패킷 IP 헤더가 분석된다. 그 후, 모든 인터넷 프로토콜 보안 (IPSEC) 프로토콜 패킷은 IPSEC RX 처리기 (308) 로 전송되어, IPSEC RX 버퍼 (304) 에 저장되고, 모든 TCP 또는 UDT 패킷은 TCP RX 전단 모듈 (316) 로 전송된다. 다른 모든 패킷은 예외 처리기 (314) 로 전송된다. 멀티플렉서 (312) 는 IP RX (310) 로부터의 정규 TCP/UDP 패킷과 IPSEC RX 처리기 (308) 로부터의 처리된 IPSEC 패킷 중에서 선택한다.
일반적인 사용에서, TCP RX 전단 모듈 (316) 은 인커밍하는 TCP 패킷을 분석하여, 수신 패킷이 TCP 데이터를 포함하는지 또는 TCP 제어 패킷인지를 결정한다. 그 후, 각각의 패킷 타입에 관한 별도의 프로세싱 경로를 제공한다. 이 때 문에, 상기 개시한 방법에서 패킷 프로세싱이 향상된다. 또한, 패킷 프로세싱은 패킷과 연관되는 정확한 소켓 CB 를 식별하기 위해 실질적인 이중 로직 및/또는 다중 데이터 구조 (즉, 탐색표 (CB 탐색표 (318) 참조) 및 CB 캐시 (CB 데이터 캐시 (324) 참조) 등) 를 병렬로 사용하는 것을 포함할 수도 있다.
그러나, 여전히 상기 개시한 이유 때문에, 데이터 패킷은 MAC RX FIFO 버퍼 (322) 에 저장되며, 동시에 패킷과 연관되는 대응 CB 를 탐색한다. 데이터 패킷이 저장되고 CB 탐색이 완료된 후에, 태그 정보는 MAC RX FIFO 버퍼 (322) 내의 데이터 패킷에 프리펜딩될 수도 있다. TCP RX 전단 모듈 (316) 의 또 다른 양태에서, 제 1 패킷과 연관되는 CB 는 업데이트될 수도 있다. 적어도 제 1 패킷과 연관되는 CB 의 업데이트를 시작한 후 및 업데이트를 완료하기 전에, 제 2 패킷의 프로세싱이 시작될 수도 있으며, 따라서, 성능이 향상된다.
이런 TCP RX 전단 모듈 (316) 기능 및 선택적인 구현 세부 설명에 관한 더 많은 정보는 도 4 및 부가 설명을 참조하는 동안에 더 상세히 개시될 것이다.
도 3 을 계속 참조하면, TCP RX 전단 모듈 (316) 은 예외 처리기 (314) 에 연결된다. 임의의 로직 예외를 발생시킴으로써 식별되는 모든 패킷은 예외 처리기 (314) 로 전송된다. 예를 들어, 수신 필터 설정과 매칭되거나, 또는 지원되지 않는 옵션을 포함하는 패킷은 예외 처리기 (314) 로 전송될 수도 있다. 상술한 바와 같이, 정규 데이터 패킷은 RX 버퍼 제어기 (320) 를 통해 MAC RX FIFO 버퍼 (322) 에서 저장된다. 이 RX 버퍼 제어기 (320) 는 예외 처리기 (314) 또는 TCP RX 전단 모듈 (316) 로부터의 패킷을 저장하라는 요청을 수락하고, 2 개의 소스 사이에서 조정한다. 이런 상호 작용에 관한 더 많은 정보는 이후 더 상세히 개시될 것이다.
RX 버퍼 제어기 (320) 는 RX 후단 모듈 (326) 에 차례로 연결되는 추가 MAC RX FIFO 버퍼 (322) 에 연결된다. 따라서, MAC RX FIFO 버퍼 (322) 는 전단 모듈과 후단 모듈 사이에 연결되어 그들 간에 경계를 제공하고 그들을 분리한다.
도 3 에 도시된 바와 같이, TCP RX 전단 모듈 (316) 은 패킷이 MAC RX FIFO 버퍼 (322) 에서 서비스하기에 이용가능하다는 것을 RX 후단 모듈 (326) 에게 나타낸다. 곧 명백하게 될 것이지만, RX 후단 모듈 (326) 은 인터넷 소형 컴퓨터 시스템 인터페이스 (iSCSI) 프로토콜 또는 임의의 다른 원하는 프로토콜 (즉, RDMA (원격 데이터 메모리 액세스) 등) 과 같은 애플리케이션 레벨 프로세싱을 처리한다. 이런 RX 후단 모듈 (326) 기능 및 선택적인 구현 세부 설명에 관한 더 많은 정보는 도 5 및 부가 설명을 참조하는 동안에 더 상세히 개시될 것이다.
최종적으로, RX 후단 모듈 (326) 은 직접 메모리 액세스 (DMA) 로직 (330) 뿐 아니라 스캐터-게더 리스트 (SGL; 344) (및/또는, 가능하게는 메모리 디스크립터 리스트 (MDL)), 및 익명 버퍼 리스트 (328) 모두를 사용하여, 호스트 메모리 (즉, 예를 들어, 도 2 의 프로세서 시스템 메모리 (206, 106) 참조) 에 수신 패킷을 저장한다. 이 설명의 콘텍스트에서, SGL 은 인커밍하는 데이터가 최종적으로 저장되는 메모리 내의 다양한 영역을 설명하기 위해 제공되는 임의의 데이터 리스트의 대상을 포함할 수도 있다.
도 4 는 일 실시형태에 따른, 수신 패킷을 프로세싱하는 예시적인 TCP RX 전 단 모듈 (316) 을 나타낸다. 옵션으로서, TCP RX 전단 모듈 (316) 은 도 3 의 예시적인 아키텍처 (300) 의 콘텍스트에서 구현될 수도 있다. 그러나, 물론, TCP RX 전단 모듈 (316) 은 임의의 원하는 콘텍스트에서 구현될 수도 있다.
도 4 에 도시된 바와 같이, TCP RX 전단 모듈 (316) 은 IP 계층으로부터 (즉, 예를 들어, 도 3 의 IP RX (310) 등을 통해) 데이터를 수신하고, 패킷을 프로세싱하거나 예외로서 패킷을 취급한다. 이를 달성하기 위해, TCP RX 분석기 (414) 및 소켓 위치기 (locator) 모듈 (402) 이 제공된다. 옵션으로서, 다중의 TCP RX 분석기 (414) 및 소켓 위치기 모듈 (402) 이 제공될 수도 있다. 이와 관련하여, 여기에 개시된 임의의 로직 모듈은 프로세싱을 향상하도록 실직적으로 이중 또는 삼중으로 제공할 수도 있다.
일반적인 사용에서, TCP RX 분석기 (414) 는 수신 TCP 및 사용자 데이터그램 프로토콜 (UDT) 패킷의 분석을 담당한다. 옵션으로서, 모든 UDT 패킷은 예외로서 (즉, 예를 들어, 도 3 의 예외 처리기 모듈 (314) 등을 통해) 전송될 수도 있거나, TCP 데이터 패킷과 유사한 방법으로 프로세싱될 수도 있다. 추가 옵션으로서, UDT 검사합계 (checksum) 가 유효할 수도 있고, UDT 검사합계가 불량하다면, 패킷은 처리중단될 수도 있다.
TCP 패킷에 관해, 모든 데이터 패킷은 RX FIFO 버퍼 (322) 에 저장되고, 모든 제어 패킷은 제어 패킷 큐 (404) 로 전송된다. 이 결정은 패킷 길이 뿐 아니라 TCP 헤더 내의 FLAG 비트를 조사함으로써 달성될 수도 있다. 따라서, 제어 패킷은 제 1 프로세싱 경로를 사용하여 프로세싱될 수도 있고, 제 1 프로세싱 경로와는 별도의 제 2 프로세싱 경로를 사용하여 프로세싱될 수도 있다.
패킷이 데이터 패킷이라면, 소켓 해시 (hash) 가 소켓 위치기 모듈 (402) 에 의해 연산된다. 배경에 의해, 각각의 데이터 패킷은 IP 주소의 쌍 및 TCP 또는 UDT 포트의 쌍 모두에 연관되어 있다. 해시는 이런 IP 주소 및 포트에 기초하여 (즉, "4 튜플의 소켓" 을 사용함으로써) 생성될 수도 있다.
그 후, 이 해시는 CB 탐색표 (318) 에 인덱싱하는데 사용될 수도 있다. 샘플 CB 탐색표 (318) 는 표 1 에 도시된 것이다.
[표 1]
해시 1 / (메모리에서 소켓 CB 1 에 대한 주소 1)
해시 2 / (메모리에서 소켓 CB 2 에 대한 주소 2)
해시 3 / (메모리에서 소켓 CB 3 에 대한 주소 3)
CB 주소는 메모리에서 적절한 CB 의 위치를 식별하는데 사용될 수도 있고, CB 와 연관되는 소켓 처리 식별기로도 사용된다. 통상적으로 CB 는 소켓 상태 등과 같은 다른 정보와 함께 이런 소켓 처리를 포함한다. 생성되는 동일한 해시값을 포함하는 다음 CB 를 지시하는 필드가 CB 구조 내에 있다. 이 방법으로 충돌하는 해시값을 갖는 소켓을 해결할 수 있다.
그 후, 현재 패킷과 연관되는 실제 소켓과 소켓 처리의 비교에 기초하여, CB 와 연관되는 소켓이 정확한 소켓인지 여부를 결정한다. 예를 들어, 패킷에서의 4-튜플이 소켓 CB 내의 파라미터와 매칭된다면, 정확한 CB 가 구해진다. 매칭되지 않으면, 다음에 링크되는 소켓 처리는 CB 로부터 판독되고, 그 후 그 소켓은 패치된다.
다음에 링크되는 소켓 처리를 취출하는 이 프로세스는 정확한 소켓 CB 가 발견되거나, 수신 패킷과 연관될 수 있는 CB 가 존재하지 않다고 결정될 때까지 계속한다. 옵션으로서, CB 탐색표 (318) 사이즈는 해시 충돌 횟수를 감소시키기 위해 지원되는 소켓의 최대 수의 2 배일 수도 있고, 외부 메모리에 위치할 수도 있다.
CB 탐색표 (318) 의 이런 사용과 병렬로, CB 데이터 캐시 (324) 에서 탐색이 수행된다. CB 데이터 캐시 (324) 는 가장 최근에 사용된 "n" 소켓 CB (즉, 32 정도) 를 포함한다. CB 데이터 캐시 (324) 는 CB 데이터 캐시 (324) 에 존재하는 각각의 CB 엔트리에 관해 생성된 해시를 표시하는 해시 연관표를 더 포함한다. 그 후, 소켓 위치기 모듈 (402) 은 매칭되는 CB 해시가 CB 데이터 캐시 (324) 에 존재하는지 여부를 결정하도록 CB 데이터 캐시 (324) 에 문의할 수 있다. 이 때문에, 가능한 CB 매칭이 CB 데이터 캐시 (324) 내에 있는지 여부를 소정의 시간 (즉, 해시를 생성하는 클럭) 내에 결정할 수 있다.
최초로 정확히 CB 를 식별하는 데이터 구조 (즉, CB 탐색표 (318) 또는 CB 데이터 캐시 (324)) 의 식별 결과를 사용함으로써, 전술한 식별 프로세스는 가속된다. 예를 들어, CB 가 CB 데이터 캐시 (324) 에 존재하지 않는 경우에, 정확한 소켓을 발견하는데 요구되는 메모리 판독의 최대 수는 수학식 1 에 의해 주어질 수도 있다.
클럭수 = 1 + p(n),
ㆍ 여기서, 제 1 판독은 CB 탐색표 (318) 탐색에 의한 것이고,
ㆍ n 은 특정 해시에 관한 CB 해시 충돌 횟수이며,
ㆍ p 는 CB 엔트리로부터 소켓 포트 및 IP 주소를 판독하는데 요구되는 클럭 사이클 수이다.
CB 가 CB 데이터 캐시 (324) 에 존재한다면, CB 를 발견하는데 요구되는 클럭의 최대 수는 수학식 2 에 의해 주어진다.
클럭의 수 = m,
ㆍ 여기서, m 은 특정 해시를 갖는 CB 데이터 캐시 (324) 내의 CB 의 수를 지칭한다.
캐시 버스 폭은 이상적으로 사이징되기 때문에 (즉, 128 비트 등), 파라미터가 CB 데이터 캐시 (324) 로부터 신속하게 판독될 수 있다.
추가 특징으로서, 소켓 위치기 모듈 (402) 이 CB 탐색표 (318) 에 의해 참조되는 CB 를 탐색하는 경우에, CB 데이터 캐시 (324) 는 모드를 통한 특별 판독을 허용할 수도 있다. 이 특별 판독 모드에서, 요청된 CB 는 CB 데이터 캐시 (324) 에 위치하는지 여부를 확인하기 위해 최초로 검사된다. CB 데이터 캐시에 존재한다면, 콘텐츠는 즉시 리턴될 수 있다. 그러나, CB 탐색표 (318) 에 위치하지 않는다면, 메인 CB 메모리로부터 판독되나, 이 모드에서 CB 는 CB 탐색표 (318) 로 전송되지 않는다. 이것은 이 포인트에서의 탐색 로직이 여전히 수신 패킷과 연관되는 CB 를 여전히 찾고 있기 때문이다. 정확한 CB 가 일단 위치하면, CB 와 연관되는 처리는 CB 데이터 캐시 (324) 를 통해 CB 를 판독하는 TCP RX 상태 제어기 (412) 로 전달된다. 동시에, CB 는 메인 CB 메모리로부터 취출되어, CB 데이터 캐시 (324) 에 위치한다.
데이터 패킷은 CB 탐색이 수행되는 것과 동시에 RX FIFO 버퍼 (322) 에 저장된다. 이 방법으로 소정의 사이즈 (즉, 80 바이트 등) 보다 더 큰 데이터 패킷에 관해, 적절한 CB 를 찾는데, 평균적으로 최소의 시간이 걸린다. 정확한 CB 를 위치시키는 것은 시간에 민감한 작업이기 때문에, 이런 로직 (즉, TCP RX 분석기 (414) 및/또는 소켓 위치기 모듈 (402) 등) 은 IP 계층으로부터 수신되는 다수의 패킷이 동시에 프로세싱될 수도 있도록, TCP RX 전단 모듈 (316) 에서 실직적으로 이중일 수도 있다 (또는 삼중으로 제공됨).
이는 제 1 패킷이 여전히 프로세싱되는 동안에, 로직이 다음 패킷에 관한 CB 를 미리 보게 하거나 탐색을 시작하게 한다. 일단, CB 가 발견되고 콘텐츠가 패치되면, 패킷 프로세싱 (즉, 패킷에 관해 무엇을 할지를 결정) 은 수 클럭 사이클 내에서 행해진다.
수신 프로세싱으로 돌아가서, 정확한 CB 가 CB 데이터 캐시 (324) 내에 존재하지 않으면, 메인 CB 메모리로부터 판독되는 동시에, CB 데이터 캐시 (324) 에 위치한다. CB 가 CB 데이터 캐시 (324) 에 이미 존재한다면, 직접 판독될 수 있다. 소켓 상태, 제어 비트, 및 (SEQ 및 ACK 수를 포함하는) 파라미터는 CB 를 사용하여 모두 획득될 수도 있다.
일단, CB 파라미터 모두가 패치되었으면, 패킷의 프로세싱은 소켓 상태에 의존하여 다른 소정의 시간 (즉, 대략 2 클럭 사이클) 내에 완료된다. 따라서, 소정의 사이즈 (즉, 평균적으로 300 바이트) 보다 더 큰 데이터 패킷에 관한 프로세싱은 데이터가 RX FIFO 버퍼 (322) 에 저장되는 시간에 의해 완료될 수도 있다. 이것은 CB 가 메인 CB 메모리로부터 패치될 필요가 있다고 할지라도 적용될 수도 있다. CB 가 이미 CB 데이터 캐시 (324) 내에 존재한다면, 훨씬 더 작은 데이터 패킷은 패킷 프로세싱에 요구되는 최소 연장 시간으로 프로세싱될 수 있다.
태그 정보는 RX FIFO 버퍼 (322) 내의 각각의 패킷에 프리펜딩된다. 이 태그 정보는 패킷 타입 (즉, 예외, TCP 데이터 패킷 등) 정보, 이와 관련되는 소켓 처리, 및/또는 다른 제어 정보 및 상태 정보를 포함할 수도 있다. 태그 정보는 전체 패킷이 수신되어 유효하다고 검증된 후에 채워질 수도 있다.
이런 태그 정보는 RX FIFO 버퍼 (322) 에서 버퍼링되는 동안에, 패킷에 더 프리펜딩될 수도 있다. 이런 방법으로 태그 정보를 프리펜딩함으로써, 전술한 CB 식별이 수행되는 동안에 수신 패킷이 저장될 수도 있다. 또한, 옵션으로서, 태그 정보에 관한 별도의 버퍼가 필요없을 수도 있다.
TCP 분석기 (414) 의 또 다른 기능은 TCP 검사 합계를 유효하게 하는 것이다. 이것은 (데이터 패킷에 관한) RX FIFO 버퍼 (322) 또는 (TCP 제어 패킷에 관한) 제어 패킷 큐 (404) 에서 분석되어 저장되기 때문에 패킷을 스누핑함으로써 행해진다. 검사 합계 결과는 IP 계층에 의해 제공되는 의사 헤더 검사 합계와 결합되어, 최종 검사 합계를 생성한다. 이 검사는 IP 모듈로부터의 마지막 워 드가 판독된 후에, 소정의 시간프레임 (즉, 3 클럭) 에 유효하다. 임의의 더 낮은 계층으로부터의 임의의 다른 에러에 의해 또는 TCP 검사합계 에러로부터 패킷이 불량하다고 간주되는 경우에, 패킷은 RX FIFO 버퍼 (322) 또는 제어 패킷 큐 (404) 로부터 드롭된다.
도 4 를 계속 참조하면, TCP RX 상태 제어기 (412) 가 제공된다. TCP RX 상태 제어기 (412) 는 수신 TCP 데이터 패킷에 관한 액션 코스의 결정을 담당한다. 소켓 CB 내의 파라미터에 대해 패킷 파라미터를 검사한다. 이것은 패킷의 시퀀스 수, 소켓 상태 등을 검사하는 것을 포함한다.
그러나, 패킷은 마치 양호할 것처럼 프로세싱된다. 그런 방법으로 전체 패킷이 수신된 후에는 모든 프로세싱이 이미 발생했고, 최소의 추가 연산이 필요하다. 패킷이 불량하다고 판명되면, CB 는 업데이트되지 않고, 패킷은 RX FIFO 버퍼 (322) 또는 제어 패킷 큐 (404) 로부터 드롭된다. 이 경우에는, 패킷이 도달하기 전임 포인트로, 각각의 버퍼에 관한 기록 포인터가 리셋된다.
일단, 전체 데이터 패킷이 RX FIFO 버퍼 (322) 에 저장된다면, TCP RX 상태 제어기 (412) 는 TCP 송신기 모듈 (미도시) 을 통해 ACK 를 스케쥴링할 수도 있다. 4 개의 ACK 모드, 즉, 정규 즉시 ACK, 정규 지연 ACK, 호스트 모드 즉시 ACK, 호스트 모드 지연 ACK 가 지원될 수도 있다.
정규 모드에서는 데이터 패킷이 수신되어 유효하다고 결정된 후에 ACK 또는 지연 ACK 를 즉시 요청하거나 큐잉하게 (queue) 한다. 2 개의 호스트 모드에서는 호스트가 RX DMA 를 통한 데이터 수신을 확인응답한 후에 ACK 를 단지 요청하거 나 대기하게 한다.
다시 TCP RX 분석기 (414) 로 돌아가서, 로직 블록은 순수 TCP 제어 패킷(즉, 임의의 데이터를 포함하지 않는 패킷) 을 데이터 패킷과 구별할 수도 있다. 이는 순수 제어 패킷이 통상적으로 더 짧은 패킷이며, 프로세싱에서 시간에 민감하지 않기 때문이다. 이들 TCP 제어 패킷은 TCP 헤더에 FLAG 비트 설정에 의해 탐지되어, 패킷의 전체 길이와 결합된다. 데이터가 패킷에 포함되지 않고 푸시 (PSH) 비트가 설정되어 있지 않다면, 그 패킷은 순수 제어 패킷이라고 간주된다.
이들 패킷은 도 4 의 제어 패킷 큐 (404) 로 전송된다. 각각의 패킷에 관한 검사합계는 패킷이 전환될 때마다 연산되고, 불량 패킷은 폐기한다. 또한, 소켓 해시가 연산되어, 별도의 섹션에서 패킷에 프리펜딩된다. 그 후, 제어 패킷 처리기 (416) 는 큐로부터 패킷을 판독하고, 그 패킷을 프로세싱한다. 그 후, 표 2 의 다음 동작이 제어 패킷에 관해 수행된다.
[표 2]
1. 소켓 해시는 CB 탐색표 (318) 에서 탐색된다. 동시에, 해시를 검사하여, CB 가 CB 데이터 캐시 (324) 내에 이미 존재하는지 여부를 확인한다.
2. CB 가 이미 CB 데이터 캐시 (324) 내에 이미 존재한다고 가정하면, 응용가능 필드를 판독한다.
3. CB 가 이미 CB 데이터 캐시 (324) 내에 존재하지 않는다면, CB 를 메인 CB 메모리로부터 판독하고, 데이터 캐시 (324) 에 위치시킨다.
4. 그 후, 액션은 수신 패킷 타입 및 소켓의 현재 상태에 의해 결정된다. 이들 액션은 다음의,
a. TCP 송신기로부터의 응답 요청
b. 호스트로 상태 메시지 전송
c. 패킷 폐기
d. 예외로서 패킷 전송
으로 제한되는 것은 아니지만, 이들 중 임의 것일 수 있다.
5. 요구되는 액션을 결정한 후에, 이에 따라 CB 가 업데이트된다.
소켓의 탐색 및 판독, 패킷 프로세싱, 및 CB 의 업데이트는 모두 파이프 라이닝된 동작이며, 이전의 제어 패킷이 여전히 프로세싱되는 동안에, 처리기가 다음 소켓을 발견하기 시작하게 한다.
도 5 는 일 실시형태에 따른, 수신 패킷을 프로세싱하는 예시적인 RX 후단 모듈 (326) 을 나타낸다. 옵션으로서, RX 후단 모듈 (326) 은 도 3 의 예시적인 아키텍처 (300) 의 콘텍스트에서 구현될 수도 있다. 그러나, 물론, RX 후단 모듈 (326) 은 임의의 원하는 콘덱스트에서 구현될 수도 있다.
일단 패킷이 RX FIFO 버퍼 (322) 에 완전히 저장되어 패킷 버퍼 헤더가 가득 차면, RX 후단 모듈 (326) 은 그 패킷을 프로세싱하기 시작한다. RX 후단 모듈 (326) 은 데이터 할당 및 RX 버퍼 헤더 분석 모듈 (502) 을 사용하여 패킷 버퍼 헤더를 분석하고 제거함으로써 시작된다. 상술한 바와 같이, 이는 RX 후단 모듈 (326) 에 패킷 타입 (즉, 예외 또는 TCP 데이터 패킷), 패킷과 연관되는 CB 처리, 및 다른 상태 및 제어 정보를 알린다. 일 실시형태에 있어서, 헤더의 길이는 256 비트일 수도 있다.
패킷 버퍼 헤더가 분석되고 제거된 후에, 패킷은 재정렬된다. 이 재정렬은 정규의 TCP (및 선택적으로 UDP) 데이터 패킷 때문에 필요할 수도 있으며, 따라서, 패킷 이더넷, IP, 및 TCP 헤더 또한 제거된다. 이들 헤더를 제거하는 것은 결과 데이터로 하여금 정렬된 비-FIFO 워드가 되게 할 수도 있고, 재정렬은 다음 로직 모듈이 패킷 데이터에 대해 동작하는 것을 더 간단하게 한다.
재정렬 후, 패킷은 애플리케이션 특정 프로세싱 로직 (504) 을 통해 선택적으로 통과될 수도 있다. 이 로직은 iSCSI 프로토콜 또는 원격 직접 메모리 액세스 (RDMA) 기능을 구현하는 로직을 포함할 수도 있으나, 여기에 제한되지는 않는다. iSCSI 지원에 관해, 이 모듈은 iSCSI 순환 중복 검사 (CRC) 검증, iSCSI 프로토콜 데이터 유닛 (PDU) 헤더 분석, 및 고정 간격 마커 (FIM) 제거를 수행할 수도 있다.
(네트워크 스택에서 모든 계층으로부터의) 모든 예외 패킷은 예외 버퍼 리스트 (즉, 일시적인 버퍼, 홀딩 버퍼, 에디 버퍼 등) 에서 특정된 바와 같이 호스트 메모리로 전송된다. 예외 리스트 (즉, 예를 들어, 도 3 의 리스트 (328) 참조) 는 호스트 드라이버에 의해 제공된다. 리스트는 버퍼를 사용함에 따라 호스트에 의해 계속적으로 향상될 수도 있다. 예외 버퍼 주소의 취출 및 예외 버퍼 리스트의 관리는 SGL 프로세싱 로직 (506) 에 의해 관리된다.
일반적으로, 소켓에 도달하는 통상의 TCP 데이터는, 호스트 메모리에서 데이 터가 저장되어야 하는 영역을 특정하기 위해 소켓 특정 SGL 을 사용한다. SGL (즉, 예를 들어, 도 3 의 SGL (334) 등 참조) 은 호스트 드라이버에 의해 제공된다. 리스트는 사용됨에 따라 호스트에 의해 계속적으로 향상될 수도 있다. 이 설명의 콘텍스트에서, SGL 은 인커밍하는 데이터가 최종적으로 저장되는 메모리 내의 다양한 영역을 설명하도록 제공되는 임의의 데이터 리스트 객체를 포함할 수도 있다. 데이터가 소켓에 수신되지만, 소켓에 연관되는 SGL 가 임의의 유효한 버퍼 주소를 포함하지 않는 경우에, 수신 데이터는 예외 버퍼 리스트를 사용하여 호스트 메모리로 전송된다. 또한, SGL 관리는 SGL 프로세싱 로직 (506) 에 의해 처리된다.
정규 TCP 데이터 패킷에 관해, SGL 엔트리는 SGL 메모리 (334) 로부터 최초로 취출된다. 수신 데이터의 시퀀스 수는 데이터가 SGL 에서 위치해야 하는 영역을 표시한다. 이것은 심지어 아웃-오브-시퀀스 (OOS) 데이터의 정확한 정렬을 적절히 허용한다. 순서대로 수신된 데이터에 관해, SGL 로부터의 단일 판독은 데이터를 저장하는 장소의 호스트 주소를 획득하도록 요구된다.
그 후, 데이터를 프로세서 시스템 메모리로 DMA 하라고 요청할 수 있다. DMA 요청이 주어지는 경우에, 데이터는 RX FIFO 버퍼 (322) 로부터 판독되어 호스트 DMA 인터페이스 (330) 로 전송되며 (도 3 참조), 여기서, 데이터는 특정 주소에서의 프로세서 시스템 메모리 (206) 로 DMA 된다. 다수의 SGL 은 핑퐁 동작 모드가 가능하도록 소켓마다 지원된다. 이것은 임의의 데이터가 익명 버퍼로 전송되게 하지 않고, 호스트 드라이버가 하나의 SGL 이 만료되자마자 다음 SGL 을 제 공하게 한다.
단일 데이터 패킷이 하나 이상의 SGL 엔트리를 점유하는 경우에, 패킷의 제 1 부분이 DMA 되는 동안, 다음 SGL 엔트리는 패치되어 프로세싱될 수도 있다. 이런 방법으로, 각각의 요청의 완료 후에 즉시 다음 DMA 를 요청한다.
일단 DMA 가 완료되면, 데이터가 도달되었음을 호스트 드라이버에게 알리기 위해, 상태 메시지가 옵션으로 생성될 수도 있다. 동시에, 임의의 CB 파라미터는, TCP RX CB 업데이팅 및 상태 메시지 요청 모듈 (508) 을 사용하여 업데이트된다.
패킷 헤더의 분석, SGL 의 패치, 데이터의 DMA, 및 CB의 업데이트는 모두 파이프라이닝된 동작일 수도 있다. 이는 심지어 이전 패킷에 관한 DMA 가 여전히 완료되어 있는 동안에도 RX 후단 모듈 (326) 이 다음 패킷 헤더를 프로세싱하기 시작하게 하며, 이느 데이터의 최대 스루풋을 보장한다. 또한, 여기에서 개시된 임의의 로직 모듈은 실질적으로 이중 또는 심지어 삼중으로 제공되어, 프로세싱을 향상시킬 수도 있다.
도 6 은 일 실시형태에 따른, 수신 패킷을 프로세싱하는 예시적인 전단 방법 (600) 을 나타낸다. 옵션으로서, 전단 방법 (600) 은 도 2 의 예시적인 아키텍처 (200) 또는 심지어 도 3 내지 도 5 의 예시적인 구조의 콘텍스트에서 수행될 수도 있다. 그러나, 물론, 전단 방법 (600) 은 임의의 원하는 콘텍스트에서 구현될 수도 있다. 또한, 다양한 기능은 예시적인 (즉, 상기 개시한 것과 같은) 컴포넌트에 기인될 수도 있지만, 다양한 기능이 임의의 원하는 엔티티에 의해 수행될 수도 있다는 것을 이해하는 것이 중요하다.
도 6 은 RX 버퍼 (즉, 예를 들어, 도 3 의 RX FIFO 버퍼 (322) 참조) 까지의 수신 패킷에 관한 프로세싱 흐름을 도시한 것이고, 따라서 전단 프로세싱에 집중되어 있다.
동작단계 602 에서, 인터넷 프로토콜 (IP) 계층은 수신 패킷이 이용가능한지 여부를 표시한다. 이런 표시에 응답하여, 판정단계 604 에서, RX 분석기 (즉, 예를 들어, 도 4 의 RX 분석기 (414) 참조) 가 이용가능한지 여부를 결정한다.
RX 분석기가 이용가능하지 않다고 결정된다면, 전단 방법 (600) 은 이용가능한 RX 분석기를 기다린다. 동작단계 606 을 주목한다. RX 분석기가 이용가능하다면, 동작단계 608 에서 수신 패킷을 이용가능한 RX 분석기로 전송한다.
일단, RX 분석기가 이용가능하다면, 패킷 헤더 내에 포함되는 파라미터를 기초로 하여, 해시가 패킷에 관해 생성된다 (624). 그 후, RX 분석기는 TCP 헤더를 관찰하여, 패킷 타입을 결정하고 (판정단계 610 참조), 패킷 파라미터를 분석한다. 패킷이 순수 TCP 제어 패킷이라면 (즉, 패킷이 TCP 데이터를 포함하지 않는다면), 패킷은 제어 패킷 큐 (즉, 예를 들면, 도 4 의 제어 패킷 큐 (404) 참조) 로 전송된다 . 동작단계 612 를 참조한다.
패킷이 TCP 데이터를 포함하지 않는다면, CB 탐색이 동작단계 616 및 618 에서 시작된다. 이중 데이터 구조 (즉, 예를 들어, CB 탐색표 (318) 및 CB 데이터 캐시 (324) 등 참조) 를 통해 병렬로 탐색할 수도 있다. 어느 경로든 먼저 완료하면 탐색 프로세싱은 종료된다. 그러나, CB 데이터 캐시 탐색이 매칭되는 CB 엔트리를 발견하는데 실패한다면, 동작단계 620 에 표시된 바와 같이 로직은 CB 탐색표 탐색을 완료할 때까지 기다린다. 일 실시형태에 있어서, CB 탐색표가 CB 를 발견하는데 실패했지만, 그 CB 가 CB 데이터 캐시 내에서 발견된 경우는 제외된다.
CB 를 발견하는 것과 병렬로, TCP 데이터는 RX 버퍼 (즉, 예를 들어, RX FIFO 버퍼 (322) 등 참조) 에 저장된다. 동작단계 614 에 주목한다. 일단 모든 데이터가 기록되면, 동작단계 622 에서 태그 섹션은 RX FIFO 내의 데이터 섹션에 프리펜딩된다. 이 태그는 (하나가 발견되었다면) CB 엔트리로부터 획득된 일부 상태 정보 뿐 아니라 패킷에 관한 파라미터 (즉, 무슨 타입의 데이터인지) 를 포함한다. 태그가 RX FIFO 에 기록된 후에, 특정 분석기는 또 다른 수신 패킷을 자유롭게 수락한다.
도 7 은 일 실시형태에 따른, 수신 패킷을 프로세싱하는 예시적인 후단 방법 (700) 을 나타낸다. 옵션으로서, 후단 방법 (700) 은 도 2 의 예시적인 아키텍처 (200) 또는 심지어 도 3 내지 도 5 의 예시적인 구조의 콘텍스트에서 수행될 수도 있다. 그러나, 여전히 후단 방법 (700) 은 도 6 의 전단 방법 (600) 과 결합하여 수행될 수도 있다.
그러나, 물론, 후단 방법 (700) 은 임의의 원하는 콘텍스트에서 구현될 수도 있다. 또한, 다양한 기능은 예시적인 (즉, 상기 개시한 것과 같은) 컴포넌트에 기인될 수도 있지만, 다양한 기능이 임의의 원하는 엔티티에 의해 수행될 수도 있다는 것을 이해하는 것이 중요하다.
도 7 은 RX 버퍼 (즉, 예를 들어, 도 3 의 RX FIFO 버퍼 (322) 참조) 로부터의 수신 패킷에 관한 프로세싱 흐름을 도시한 것이고, 따라서 후단 프로세싱에 집중되어 있다.
도 7 에서의 흐름은 데이터가 RX FIFO 버퍼 (즉, 예를 들면, RX FIFO 버퍼 (322) 등 참조) 의 출력에서 이용가능한 경우에 시작된다. 패킷이 이용가능하다면, 먼저, 동작단계 702 및 704 에서 RX FIFO 버퍼 엔트리에 관한 헤더 섹션을 판독한다. 이것은 다른 상태 정보 뿐 아니라 데이터 패킷 타입을 후단 로직에 표시한다.
패킷 버퍼 헤더는 분석된 후에, 이더넷, IP, 및 (오프로딩된 연결에 대한 수신 패킷에 관한) TCP/UDP 헤더와 함께 제거되고, 데이터가 재정렬된다. 동작단계 706 를 참조한다.
그 후, 데이터는 선택적 할당 특정 프로세싱 로직으로 선택적으로 통과된다. 동작단계 708 를 참조한다. 예를 들어, 이 로직에서는 iSCSI 및 RDMA 지원 프로세싱이 수행된다.
패킷이 오프로딩된 연결에 속한다면 (즉, 패킷 파라미터와 매칭되는 CB 엔트리가 발견되었다면), 임의의 SGL 버퍼가 데이터에 관해 이용가능한지 여부를 확인하도록 검사한다. 판정단계 710 을 주목한다. 이용가능한 버퍼가 있다면, 데이터는 프로세서 시스템 메모리 내의 소켓 버퍼로 DMA 된다. 이것은, 데이터가 프로세서 시스템 메모리로 DMA 된 후에, 동작단계 712 에서 소켓의 SGL 로부터 호스트 버퍼 주소를 획득함으로써 달성된다. 동작단계 716 을 참조한다.
소켓 버퍼가 이용가능하지 않다면, 데이터는 전역 (global) 리스트로부터의 예외 버퍼 주소를 사용하여 (또한, 프로세서 시스템 메모리에 위치한) 일반적인 예외 버퍼로 DMA 된다. 동작단계 714 를 참조한다. 또한, 그 후, 프로세싱되는 데이터가 존재한다는 것을 표시하는 통지가 호스트로 전송될 수도 있다.
(판정단계 718 마다) CB 가 패킷을 위해 사용되었다면, 그 CB 는 동작단계 722 에서 업데이트된다. 사용되지 않았다면, (동작단계 720 에 기재된 바와 같이) 추가 동작은 요구되지 않는다. 병렬로, 후단 로직은 RX FIFO 버퍼로부터의 다음 패킷을 프로세싱하기 시작할 수도 있다.
도 8 은 일 실시형태에 따른, 수신 패킷을 프로세싱하는 예시적인 제어 패킷 프로세싱 방법 (800) 을 나타낸다. 옵션으로서, 프로세싱 방법 (800) 은 도 2 의 예시적인 아키텍처 (200) 또는 심지어 도 3 내지 도 5 의 예시적인 구조의 콘텍스트에서 수행될 수도 있다. 그러나, 여전히 프로세싱 방법 (800) 은 도 6 및 도 7 의 전단 방법 (600) 및 후단 방법 (700) 과 각각 결합하여 수행될 수도 있다.
그러나, 물론, 프로세싱 방법 (800) 은 임의의 원하는 콘텍스트에서 구현될 수도 있다. 또한, 다양한 기능은 예시적인 (즉, 상기 개시한 것과 같은) 컴포넌트에 기인될 수도 있지만, 다양한 기능이 임의의 원하는 엔티티에 의해 수행될 수도 있다는 것을 이해하는 것이 중요하다.
도 8 의 프로세싱 방법 (800) 은 제어 패킷이 제어 패킷 큐 (즉, 예를 들어, 도 4 의 제어 패킷 큐 (404) 참조) 의 출력에서 이용가능한 경우에 시작된다. 동작단계 802 에 주목한다. 최초로 하는 일은 패킷 데이터 버퍼를 분석하는 것 이다. 동작단계 804 를 주목한다. 이 헤더는, 제어 패킷과 연관되는 다른 상태 정보와 함께 생성된 패킷 해시를 포함한다. 다음으로, 매칭되는 CB 의 탐색이 취출된 해시값을 사용하여 시작된다. 데이터 패킷에 관한 전단 로직에 사용되는 도 6 의 전단 방법 (600) 과 유사하게, 이중 데이터 구조 (즉, 예를 들어, CB 탐색표 (318) 및 CB 데이터 캐시 (324) 등 참조) 에 병렬로 문의한다. 동작단계 806 및 808 을 참조한 다음에, 동작단계 810 에서 결과를 기다린다.
판정단계 812 마다 수신 TCP 제어 패킷에 매칭되는 CB 가 발견되지 않았다면, 동작단계 816 에서, 패킷은 DMA 를 통해 호스트로 전송되도록 스케줄링되고, RX 제어 로직은 큐로부터의 다음 제어 패킷을 프로세싱하기 시작할 수 있다. 로직은, 계속되기 전에, 반드시 제어 패킷이 동작단계 824 에서의 호스트로 DMA 되도록 기다릴 필요는 없다.
판정단계 812 마다 제어 패킷에 관해 매칭되는 CB 가 발견되었다면, 그 패킷은 동작단계 814 에서 프로세싱된다. 그 후, 소켓 CB 가 패킷 프로세싱의 결과로서 업데이트가 필요한지 여부를 확인하도록 검사한다. 판정단계 818 을 참조한다. CB 가 업데이팅이 필요하다면, 동작단계 820 및 822 에서 업데이트되도록 스케줄링된다. 그 후, 제어 패킷 로직은 큐로부터의 다음 제어 패킷을 프로세싱하기 시작할 수 있다. 동시에, 상술한 바와 같이, CB 는 현재의 제어 패킷에 관해 업데이트된다.
다양한 실시형태가 상술되었지만, 이들은 제한이 아닌 단지 예로서 제공된 것임을 이해해야 한다. 따라서, 바람직한 실시형태의 폭과 범위는 상술한 임의 의 예시적인 실시형태로 제한되어서는 안되고, 오직 다음의 특허 청구 범위 및 그 균등물에 따라 정의되어야 한다.

Claims (9)

  1. 네트워크를 통해 수신되는 패킷을 프로세싱하는 방법으로서,
    데이터 패킷 및 제어 패킷을 네트워크를 통해 수신하는 단계; 및
    상기 제어 패킷의 프로세싱과 병렬로 상기 데이터 패킷을 프로세싱하는 단계를 포함하는, 패킷 프로세싱 방법.
  2. 제 1 항에 있어서,
    상기 제어 패킷은 제 1 프로세싱 경로를 사용하여 프로세싱되고,
    상기 데이터 패킷은 상기 제 1 프로세싱 경로와는 별도의 제 2 프로세싱 경로를 사용하여 프로세싱되는, 패킷 프로세싱 방법.
  3. 제 1 항에 있어서,
    상기 패킷들을 프로세싱하는 단계는 상기 패킷들과 연관된 정확한 소켓 제어 블록을 식별하기 위해 탐색표 및 캐시를 병렬로 사용하는 단계를 포함하는, 패킷 프로세싱 방법.
  4. 제 1 항에 있어서,
    상기 데이터 패킷을 프로세싱하는 단계는 상기 패킷들과 연관되는 정확한 소켓 제어 블록을 식별하기 위해 실질적인 이중 로직을 병렬로 사용하는 단계를 포함 하는, 패킷 프로세싱 방법.
  5. 제 1 항에 있어서,
    상기 패킷들과 연관된 제어 블록은 후속 패킷의 프로세싱과 병렬로 업데이트되는, 패킷 프로세싱 방법.
  6. 제 1 항에 있어서,
    태그 정보가 상기 데이터 패킷에 프리펜딩되는, 패킷 프로세싱 방법.
  7. 제 6 항에 있어서,
    상기 태그 정보는 수신기 (RX) 선입선출 (FIFO) 버퍼에 버퍼링되는 동안에 상기 데이터 패킷에 프리펜딩되는, 패킷 프로세싱 방법.
  8. 제 6 항에 있어서,
    상기 태그 정보는, 대응 패킷의 타입, 상기 대응 패킷에 연관되는 소켓 처리, 상기 대응 패킷에 연관되는 상태 정보, 및 상기 대응 패킷과 연관되는 제어 정보로 구성되는 그룹으로부터 선택되는, 패킷 프로세싱 방법.
  9. 네트워크를 통해 수신되는 패킷을 프로세싱하는 방법으로서,
    전단 모듈을 사용하여 수신 패킷을 프로세싱하는 단계; 및
    후단 모듈을 사용하여 수신 패킷을 프로세싱하는 단계를 포함하며,
    수신기 (RX) 선입선출 (FIFO) 버퍼가 상기 전단 모듈과 상기 후단 모듈 사이에 연결되어 상기 모듈들 사이에 경계를 제공하는, 패킷 프로세싱 방법.
KR1020077008944A 2004-10-19 2005-10-19 Rx fifo 버퍼를 사용하여 고속 네트워크애플리케이션에서 rx 패킷을 프로세싱하는 시스템 및방법 KR101018575B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/969,376 2004-10-19
US10/969,376 US7957379B2 (en) 2004-10-19 2004-10-19 System and method for processing RX packets in high speed network applications using an RX FIFO buffer

Publications (2)

Publication Number Publication Date
KR20070085272A true KR20070085272A (ko) 2007-08-27
KR101018575B1 KR101018575B1 (ko) 2011-03-03

Family

ID=36180692

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077008944A KR101018575B1 (ko) 2004-10-19 2005-10-19 Rx fifo 버퍼를 사용하여 고속 네트워크애플리케이션에서 rx 패킷을 프로세싱하는 시스템 및방법

Country Status (6)

Country Link
US (1) US7957379B2 (ko)
JP (1) JP2008517565A (ko)
KR (1) KR101018575B1 (ko)
CN (1) CN101120424B (ko)
TW (1) TWI407733B (ko)
WO (1) WO2006045057A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101428138B1 (ko) * 2007-12-18 2014-08-07 알까뗄 루슨트 통신 방법 및 디바이스

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8396981B1 (en) * 2005-06-07 2013-03-12 Oracle America, Inc. Gateway for connecting storage clients and storage servers
US20080304481A1 (en) * 2005-07-12 2008-12-11 Paul Thomas Gurney System and Method of Offloading Protocol Functions
US8621030B2 (en) * 2006-09-28 2013-12-31 Intel Corporation Techniques to copy an operating system
CN101272378B (zh) * 2007-03-23 2011-05-11 国际商业机器公司 用于处理会话启动协议消息的方法和系统
JP5152201B2 (ja) * 2008-01-21 2013-02-27 富士通株式会社 パケット処理装置およびパケット処理プログラム
JP5333200B2 (ja) * 2009-12-25 2013-11-06 富士通株式会社 パケット通信制御装置、メモリアクセス制御装置及び情報処理システム
CN102006283B (zh) * 2010-10-21 2013-07-17 意法·爱立信半导体(北京)有限公司 数据传输的方法和装置
SG194017A1 (en) * 2011-03-30 2013-11-29 Amazon Tech Inc Frameworks and interfaces for offload device-based packet processing
US8774213B2 (en) 2011-03-30 2014-07-08 Amazon Technologies, Inc. Frameworks and interfaces for offload device-based packet processing
US8462780B2 (en) 2011-03-30 2013-06-11 Amazon Technologies, Inc. Offload device-based stateless packet processing
US20130346274A1 (en) * 2012-06-25 2013-12-26 Liquid Holdings Group, Inc. Electronic financial trading platform with real-time data analysis and reporting
US10057387B2 (en) 2012-12-26 2018-08-21 Realtek Singapore Pte Ltd Communication traffic processing architectures and methods
WO2014105650A1 (en) * 2012-12-26 2014-07-03 Cortina Systems, Inc. Communication traffic processing architectures and methods
CN104657555A (zh) * 2015-02-11 2015-05-27 北京麓柏科技有限公司 一种基于uvm验证方法学的toe的验证方法及平台
KR101854377B1 (ko) 2016-11-10 2018-05-03 고려대학교 산학협력단 고속 패킷 처리 시스템 및 그 제어방법
US11075848B2 (en) 2019-08-21 2021-07-27 Hewlett Packard Enterprise Development Lp Fast path for acknowledgement frames in wireless networks

Family Cites Families (197)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US212889A (en) * 1879-03-04 Improvement in road-engines
US4807111A (en) * 1987-06-19 1989-02-21 International Business Machines Corporation Dynamic queueing method
US4839851A (en) * 1987-07-13 1989-06-13 Idaho Research Foundation, Inc. Programmable data path device
US5012489A (en) * 1988-11-07 1991-04-30 Hayes Microcomputer Products, Inc. Method for sending a plurality of data channels over a single communications line
US5303344A (en) * 1989-03-13 1994-04-12 Hitachi, Ltd. Protocol processing apparatus for use in interfacing network connected computer systems utilizing separate paths for control information and data transfer
JP2986802B2 (ja) 1989-03-13 1999-12-06 株式会社日立製作所 プロトコル高速処理方法
US5687314A (en) 1989-06-02 1997-11-11 Tele Digital Development, Inc. Method and apparatus for assisting data bus transfer protocol
US5163131A (en) 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
US5161193A (en) 1990-06-29 1992-11-03 Digital Equipment Corporation Pipelined cryptography processor and method for its use in communication networks
US5251205A (en) 1990-09-04 1993-10-05 Digital Equipment Corporation Multiple protocol routing
US5367643A (en) * 1991-02-06 1994-11-22 International Business Machines Corporation Generic high bandwidth adapter having data packet memory configured in three level hierarchy for temporary storage of variable length data packets
AU1587592A (en) * 1991-03-18 1992-10-21 Echelon Corporation Networked variables
US5307413A (en) * 1991-07-19 1994-04-26 Process Software Corporation Method and apparatus for adding data compression and other services in a computer network
US6098188A (en) 1992-02-14 2000-08-01 Lucent Technologies Inc. Packet framer
US5742760A (en) 1992-05-12 1998-04-21 Compaq Computer Corporation Network packet switch using shared memory for repeating and bridging packets at media rate
US5877764A (en) * 1992-10-23 1999-03-02 International Business Machines Corporation Graphical user interface for managing text i/o between a user and a parallel program
US5696899A (en) 1992-11-18 1997-12-09 Canon Kabushiki Kaisha Method and apparatus for adaptively determining the format of data packets carried on a local area network
EP0672277B1 (en) 1992-12-01 1998-05-13 Microsoft Corporation A method and system for in-place interaction with embedded objects
US5619650A (en) * 1992-12-31 1997-04-08 International Business Machines Corporation Network processor for transforming a message transported from an I/O channel to a network by adding a message identifier and then converting the message
JPH0763161B2 (ja) 1993-01-05 1995-07-05 日本電気株式会社 マルチメディアパケット通信方式
WO1994023374A2 (en) * 1993-03-30 1994-10-13 Ast Research Inc STROBOSCOPIC LOGIC FOR TRIGGERING SIMULATED BUS CONTROL CYCLES
US5596702A (en) * 1993-04-16 1997-01-21 International Business Machines Corporation Method and system for dynamically sharing user interface displays among a plurality of application program
US5495480A (en) * 1993-06-21 1996-02-27 Nec Corporation Packet transmission system having timer for circuit disconnection
US5621434A (en) * 1993-08-11 1997-04-15 Object Technology Licensing Corp. Cursor manipulation system and method
US5426694A (en) * 1993-10-08 1995-06-20 Excel, Inc. Telecommunication switch having programmable network protocols and communications services
US5802287A (en) 1993-10-20 1998-09-01 Lsi Logic Corporation Single chip universal protocol multi-function ATM network interface
US5625825A (en) * 1993-10-21 1997-04-29 Lsi Logic Corporation Random number generating apparatus for an interface unit of a carrier sense with multiple access and collision detect (CSMA/CD) ethernet data network
JP3358254B2 (ja) 1993-10-28 2002-12-16 株式会社日立製作所 通信制御装置および通信制御用回路装置
AU7965794A (en) 1993-11-02 1995-05-23 Paracom Corporation Apparatus for accelerating processing of transactions on computer databases
JP3454828B2 (ja) 1993-11-02 2003-10-06 オブジェクト テクノロジー ライセンシング コーポレイション オブジェクト指向グラフィック・システム
US5524110A (en) 1993-11-24 1996-06-04 Intel Corporation Conferencing over multiple transports
AU6018294A (en) * 1993-12-02 1995-06-19 Taligent, Inc. Method and apparatus for displaying hardware dependent graphics in an object-oriented operating system
US5485455A (en) 1994-01-28 1996-01-16 Cabletron Systems, Inc. Network having secure fast packet switching and guaranteed quality of service
US5577105A (en) * 1994-03-11 1996-11-19 U.S. Robotics, Inc. Telephone call routing and switching techniques for data communications
US6185619B1 (en) * 1996-12-09 2001-02-06 Genuity Inc. Method and apparatus for balancing the process load on network servers according to network and serve based policies
US5519704A (en) * 1994-04-21 1996-05-21 Cisco Systems, Inc. Reliable transport protocol for internetwork routing
US5650941A (en) 1994-09-07 1997-07-22 Intel Corporation Computer architecture for creating and manipulating displayable objects
US5870549A (en) 1995-04-28 1999-02-09 Bobo, Ii; Charles R. Systems and methods for storing, delivering, and managing messages
US5675507A (en) 1995-04-28 1997-10-07 Bobo, Ii; Charles R. Message storage and delivery system
US5664162A (en) 1994-05-23 1997-09-02 Cirrus Logic, Inc. Graphics accelerator with dual memory controllers
US5577172A (en) 1994-07-01 1996-11-19 Lasermaster Corporation High-capacity protocol for packet-based networks
US5485460A (en) * 1994-08-19 1996-01-16 Microsoft Corporation System and method for running multiple incompatible network protocol stacks
US5726769A (en) * 1994-11-14 1998-03-10 Canon Kabushiki Kaisha Image processing apparatus capable of connecting external information processing terminal, and including printer unit and data processing unit
US5905582A (en) * 1994-11-14 1999-05-18 Canon Kabushiki Kaisha Image processing apparatus for processing image data in response to signals from an external apparatus
US5812951A (en) 1994-11-23 1998-09-22 Hughes Electronics Corporation Wireless personal communication system
JPH08180006A (ja) * 1994-12-22 1996-07-12 Hitachi Ltd ネットワークインタフェースおよび計算機ネットワークシステム
US5566170A (en) 1994-12-29 1996-10-15 Storage Technology Corporation Method and apparatus for accelerated packet forwarding
US5598410A (en) * 1994-12-29 1997-01-28 Storage Technology Corporation Method and apparatus for accelerated packet processing
US5577237A (en) 1995-01-23 1996-11-19 Tandem Computers, Incorporated Protocol timer and method of using same
US5680605A (en) 1995-02-07 1997-10-21 Torres; Robert J. Method and apparatus for searching a large volume of data with a pointer-based device in a data processing system
US5802278A (en) 1995-05-10 1998-09-01 3Com Corporation Bridge/router architecture for high performance scalable networking
US5625678A (en) * 1995-05-24 1997-04-29 Microsoft Corporation Method and system for allowing switched voice and data communication among multiple application programs
US5870622A (en) * 1995-06-07 1999-02-09 Advanced Micro Devices, Inc. Computer system and method for transferring commands and data to a dedicated multimedia engine
US5636371A (en) * 1995-06-07 1997-06-03 Bull Hn Information Systems Inc. Virtual network mechanism to access well known port application programs running on a single host system
US5734865A (en) * 1995-06-07 1998-03-31 Bull Hn Information Systems Inc. Virtual local area network well-known port routing mechanism for mult--emulators in an open system environment
US5754540A (en) * 1995-07-18 1998-05-19 Macronix International Co., Ltd. Expandable integrated circuit multiport repeater controller with multiple media independent interfaces and mixed media connections
US5918051A (en) * 1995-07-19 1999-06-29 Ricoh Company, Ltd. Object-oriented communication system with support for multiple remote machine types
US5666362A (en) 1995-07-25 1997-09-09 3Com Corporation Method and apparatus for asynchronous PPP and synchronous PPP conversion
US5701316A (en) 1995-08-31 1997-12-23 Unisys Corporation Method for generating an internet protocol suite checksum in a single macro instruction
US5699350A (en) 1995-10-06 1997-12-16 Canon Kabushiki Kaisha Reconfiguration of protocol stacks and/or frame type assignments in a network interface device
US5802306A (en) 1995-10-31 1998-09-01 International Business Machines Corporation Supporting multiple client-server sessions from a protocol stack associated with a single physical adapter through use of a plurality of logical adapters
US5778178A (en) 1995-11-13 1998-07-07 Arunachalam; Lakshmi Method and apparatus for enabling real-time bi-directional transactions on a network
US5826032A (en) 1996-02-12 1998-10-20 University Of Southern California Method and network interface logic for providing embedded checksums
US5809235A (en) 1996-03-08 1998-09-15 International Business Machines Corporation Object oriented network event management framework
US5909546A (en) * 1996-03-08 1999-06-01 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Network interface having support for allowing remote operations with reply that bypass host computer interaction
US5894557A (en) * 1996-03-29 1999-04-13 International Business Machines Corporation Flexible point-to-point protocol framework
US5901287A (en) * 1996-04-01 1999-05-04 The Sabre Group Inc. Information aggregation and synthesization system
US5815516A (en) 1996-04-05 1998-09-29 International Business Machines Corporation Method and apparatus for producing transmission control protocol checksums using internet protocol fragmentation
US5946487A (en) 1996-06-10 1999-08-31 Lsi Logic Corporation Object-oriented multi-media architecture
US5920732A (en) 1996-07-01 1999-07-06 Apple Computer, Inc. System for preallocating additional larger buffer sizes in accordance with packet sizes of discarded packets that can't be stored in existing preallocated buffer sizes
US5983332A (en) 1996-07-01 1999-11-09 Sun Microsystems, Inc. Asynchronous transfer mode (ATM) segmentation and reassembly unit virtual address translation unit architecture
US5754556A (en) * 1996-07-18 1998-05-19 Teradyne, Inc. Semiconductor memory tester with hardware accelerators
US5956034A (en) 1996-08-13 1999-09-21 Softbook Press, Inc. Method and apparatus for viewing electronic reading materials
US5968161A (en) 1996-08-29 1999-10-19 Altera Corporation FPGA based configurable CPU additionally including second programmable section for implementation of custom hardware support
US5748905A (en) * 1996-08-30 1998-05-05 Fujitsu Network Communications, Inc. Frame classification using classification keys
US5854750A (en) 1996-09-03 1998-12-29 Insession, Inc. System and method for processing transactions in an environment containing a number of object oriented applications
US5847698A (en) 1996-09-17 1998-12-08 Dataventures, Inc. Electronic book device
US5987582A (en) 1996-09-30 1999-11-16 Cirrus Logic, Inc. Method of obtaining a buffer contiguous memory and building a page table that is accessible by a peripheral graphics device
US6092229A (en) 1996-10-09 2000-07-18 Lsi Logic Corporation Single chip systems using general purpose processors
US6101543A (en) 1996-10-25 2000-08-08 Digital Equipment Corporation Pseudo network adapter for frame capture, encapsulation and encryption
US6034963A (en) 1996-10-31 2000-03-07 Iready Corporation Multiple network protocol encoder/decoder and data processor
US6230193B1 (en) * 1996-10-31 2001-05-08 3Com Corporation Method and apparatus supporting network communications
US7035291B2 (en) 2001-05-02 2006-04-25 Ron Grinfeld TCP transmission acceleration
US6046980A (en) * 1996-12-09 2000-04-04 Packeteer, Inc. System for managing flow bandwidth utilization at network, transport and application layers in store and forward network
US5941988A (en) 1997-01-27 1999-08-24 International Business Machines Corporation Session and transport layer proxies via TCP glue
WO1998037665A1 (en) * 1997-02-02 1998-08-27 Fonefriend Systems, Inc. Internet switch box, system and method for internet telephony
US6076115A (en) * 1997-02-11 2000-06-13 Xaqti Corporation Media access control receiver and network management system
US6172990B1 (en) * 1997-06-19 2001-01-09 Xaqti Corporation Media access control micro-RISC stream processor and method for implementing the same
US6247068B1 (en) * 1997-03-07 2001-06-12 Advanced Micro Devices Inc. Winsock-data link library transcoder
US5818935A (en) 1997-03-10 1998-10-06 Maa; Chia-Yiu Internet enhanced video system
US6157956A (en) 1997-03-28 2000-12-05 Global Maintech, Inc. Heterogeneous computing interface apparatus and method using a universal character set
US5974518A (en) 1997-04-10 1999-10-26 Milgo Solutions, Inc. Smart buffer size adaptation apparatus and method
US5943481A (en) 1997-05-07 1999-08-24 Advanced Micro Devices, Inc. Computer communication network having a packet processor with subsystems that are variably configured for flexible protocol handling
US5872919A (en) * 1997-05-07 1999-02-16 Advanced Micro Devices, Inc. Computer communication network having a packet processor with an execution unit which is variably configured from a programmable state machine and logic
AU734115B2 (en) 1997-05-08 2001-06-07 Nvidia Corporation Hardware accelerator for an object-oriented programming language
US6081846A (en) * 1997-05-08 2000-06-27 Microsoft Corporation Method and computer program product for reducing intra-system data copying during network packet processing
US6330659B1 (en) 1997-11-06 2001-12-11 Iready Corporation Hardware accelerator for an object-oriented programming language
US6012961A (en) * 1997-05-14 2000-01-11 Design Lab, Llc Electronic toy including a reprogrammable data storage device
US5935268A (en) 1997-06-03 1999-08-10 Bay Networks, Inc. Method and apparatus for generating an error detection code for a modified data packet derived from an original data packet
US6208651B1 (en) * 1997-06-10 2001-03-27 Cornell Research Foundation, Inc. Method and system for masking the overhead of protocol layering
US5966534A (en) 1997-06-27 1999-10-12 Cooke; Laurence H. Method for compiling high level programming languages into an integrated processor with reconfigurable logic
WO1999004343A1 (en) * 1997-07-18 1999-01-28 Interprophet Corporation Tcp/ip network accelerator system and method
US6397316B2 (en) * 1997-07-24 2002-05-28 Intel Corporation System for reducing bus overhead for communication with a network interface
US6078736A (en) * 1997-08-28 2000-06-20 Xilinx, Inc. Method of designing FPGAs for dynamically reconfigurable computing
US6014699A (en) * 1997-08-29 2000-01-11 International Business Machines Corporation Internet protocol assists for high performance LAN connections
US5999974A (en) 1997-08-29 1999-12-07 International Business Machines Corporation Internet protocol assists for high performance LAN connections
US6151625A (en) 1997-09-10 2000-11-21 Schneider Automation Inc. Internet web interface including programmable logic controller for controlling output devices based on status of input devices
US5991299A (en) 1997-09-11 1999-11-23 3Com Corporation High speed header translation processing
US6172980B1 (en) * 1997-09-11 2001-01-09 3Com Corporation Multiple protocol support
US6094657A (en) 1997-10-01 2000-07-25 International Business Machines Corporation Apparatus and method for dynamic meta-tagging of compound documents
US6061742A (en) * 1997-10-10 2000-05-09 Nortel Networks Corporation Computer network adaptor
US6687758B2 (en) 2001-03-07 2004-02-03 Alacritech, Inc. Port aggregation for network connections that are offloaded to network interface devices
US6591302B2 (en) 1997-10-14 2003-07-08 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US6389479B1 (en) * 1997-10-14 2002-05-14 Alacritech, Inc. Intelligent network interface device and system for accelerated communication
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6757746B2 (en) 1997-10-14 2004-06-29 Alacritech, Inc. Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
US7167927B2 (en) * 1997-10-14 2007-01-23 Alacritech, Inc. TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism
US7133940B2 (en) 1997-10-14 2006-11-07 Alacritech, Inc. Network interface device employing a DMA command queue
US6226680B1 (en) * 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6092110A (en) 1997-10-23 2000-07-18 At&T Wireless Svcs. Inc. Apparatus for filtering packets using a dedicated processor
US5923892A (en) 1997-10-27 1999-07-13 Levy; Paul S. Host processor and coprocessor arrangement for processing platform-independent code
US5937169A (en) 1997-10-29 1999-08-10 3Com Corporation Offload of TCP segmentation to a smart adapter
US6061368A (en) 1997-11-05 2000-05-09 Xylan Corporation Custom circuitry for adaptive hardware routing engine
JP3042615B2 (ja) 1997-12-09 2000-05-15 瑞麟 蕭 中間ステーション型のマルチメディア情報処理装置と方法
US6567855B1 (en) * 1998-01-02 2003-05-20 Intel Corporation Portable processing system with always on, always connected capability
US6058421A (en) * 1998-02-04 2000-05-02 3Com Corporation Method and system for addressing network host interfaces from a cable modem using DHCP
JPH11313091A (ja) 1998-02-24 1999-11-09 Canon Inc データ通信システム、装置及び方法並びに記憶媒体
US6341129B1 (en) * 1998-04-03 2002-01-22 Alteon Networks, Inc. TCP resegmentation
US6765901B1 (en) 1998-06-11 2004-07-20 Nvidia Corporation TCP/IP/PPP modem
US6157955A (en) 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US6480494B1 (en) * 1998-06-15 2002-11-12 Nokia High Speed Access Products, Inc. Switching system data interface
US6182228B1 (en) * 1998-08-17 2001-01-30 International Business Machines Corporation System and method for very fast IP packet filtering
JP3542103B2 (ja) 1998-09-08 2004-07-14 富士通株式会社 ネットワーク制御方式
US6233626B1 (en) * 1998-10-06 2001-05-15 Schneider Automation Inc. System for a modular terminal input/output interface for communicating messaging application layer over encoded ethernet to transport layer
US6331865B1 (en) 1998-10-16 2001-12-18 Softbook Press, Inc. Method and apparatus for electronically distributing and viewing digital contents
US6363418B1 (en) * 1998-10-16 2002-03-26 Softbook Press, Inc. On-line image caching control for efficient image display
US6430628B1 (en) 1998-12-08 2002-08-06 Intel Corporation Method and apparatus for reducing direct memory access transfers using smart coalescing
US6480852B1 (en) 1998-12-11 2002-11-12 International Business Machines Corporation Method and system for rating bookmarks in a web browser
CA2355188C (en) 1998-12-16 2007-11-06 Silverbrook Research Pty Ltd A printer for incorporation into consumer electronic (ce) systems with limited access
JP2000196669A (ja) 1998-12-25 2000-07-14 Hitachi Ltd 情報中継装置
US6347337B1 (en) * 1999-01-08 2002-02-12 Intel Corporation Credit based flow control scheme over virtual interface architecture for system area networks
US6345301B1 (en) * 1999-03-30 2002-02-05 Unisys Corporation Split data path distributed network protocol
US6389537B1 (en) * 1999-04-23 2002-05-14 Intel Corporation Platform and method for assuring integrity of trusted agent communications
US6347347B1 (en) * 1999-07-15 2002-02-12 3Com Corporation Multicast direct memory access storing selected ones of data segments into a first-in-first-out buffer and a memory simultaneously when enabled by a processor
US6510458B1 (en) * 1999-07-15 2003-01-21 International Business Machines Corporation Blocking saves to web browser cache based on content rating
US6449656B1 (en) * 1999-07-30 2002-09-10 Intel Corporation Storing a frame header
US6427169B1 (en) 1999-07-30 2002-07-30 Intel Corporation Parsing a packet header
TW447205B (en) 1999-11-18 2001-07-21 Iready Corp Multiple network protocol encoder/decoder and date processor
TW448407B (en) 1999-11-18 2001-08-01 Iready Corp Hardware accelerator for an object-oriented programming language
US6327625B1 (en) 1999-11-30 2001-12-04 3Com Corporation FIFO-based network interface supporting out-of-order processing
US6530061B1 (en) * 1999-12-23 2003-03-04 Intel Corporation Method and apparatus for offloading checksum
US6773344B1 (en) 2000-03-16 2004-08-10 Creator Ltd. Methods and apparatus for integration of interactive toys with interactive television and cellular communication systems
US6701316B1 (en) * 2000-04-07 2004-03-02 Nec Corporation Method and apparatus for intelligent network bandwidth and system resource utilization for web content fetch and refresh
JP3614082B2 (ja) * 2000-04-12 2005-01-26 日本電気株式会社 通信網接続装置
NL1015702C2 (nl) * 2000-07-13 2002-01-15 Dia Services B V Systeem voor het registreren van een beschrijfbaar medium, systeem voor het authentiseren van een beschrijfbaar medium, alsmede servers en cliÙntsysteem voor dergelijke systemen.
US20020085562A1 (en) 2000-12-13 2002-07-04 International Business Machines Corporation IP headers for remote direct memory access and upper level protocol framing
US6609225B1 (en) 2000-12-21 2003-08-19 Cisco Technology, Inc. Method and apparatus for generating and checking cyclic redundancy code (CRC) values using a multi-byte CRC generator on a variable number of bytes
US7149817B2 (en) * 2001-02-15 2006-12-12 Neteffect, Inc. Infiniband TM work queue to TCP/IP translation
GB2372680B (en) 2001-02-27 2003-02-19 3Com Corp Calculation and transmission of error check codes
US7065702B2 (en) * 2001-04-12 2006-06-20 Siliquent Technologies Ltd. Out-of-order calculation of error detection codes
US8218555B2 (en) * 2001-04-24 2012-07-10 Nvidia Corporation Gigabit ethernet adapter
WO2002097580A2 (en) * 2001-05-31 2002-12-05 Espeed, Inc. Securities trading system with multiple levels-of-interest
KR100510423B1 (ko) * 2001-06-01 2005-08-30 세이코 엡슨 가부시키가이샤 컬러 필터, 표시 장치 및 전자 기기
JP3749458B2 (ja) 2001-06-06 2006-03-01 コナミ株式会社 遊戯拡張システムと玩具システムとを備えたシステム
US7194766B2 (en) * 2001-06-12 2007-03-20 Corrent Corporation Method and system for high-speed processing IPSec security protocol packets
US20030003117A1 (en) * 2001-06-18 2003-01-02 Michael Marenick Hydrolyzed whole egg products & related methods
US7165112B2 (en) * 2001-06-22 2007-01-16 Motorola, Inc. Method and apparatus for transmitting data in a communication system
WO2003005672A2 (en) 2001-07-06 2003-01-16 Livedevices Limited Improvements relating to reduction of resource usage in tcp/ip implementation
US7426729B2 (en) * 2001-07-11 2008-09-16 Sun Microsystems, Inc. Distributed processing framework system
US6980551B2 (en) * 2001-07-12 2005-12-27 International Business Machines Corporation Full transmission control protocol off-load
JP4154874B2 (ja) * 2001-07-30 2008-09-24 カシオ計算機株式会社 指紋読取装置および指紋読取方法
US7020716B2 (en) * 2001-08-31 2006-03-28 Adaptec, Inc. Method and system for verifying the hardware implementation of TCP/IP
WO2003021447A1 (en) * 2001-08-31 2003-03-13 Adaptec, Inc. Methods and apparatus for partially reordering data packets
US20030046330A1 (en) * 2001-09-04 2003-03-06 Hayes John W. Selective offloading of protocol processing
DE10143366A1 (de) * 2001-09-04 2003-03-20 Kiekert Ag Kraftfahrzeugtürverschluss
US8255567B2 (en) * 2001-09-06 2012-08-28 Broadcom Corporation Efficient IP datagram reassembly
US7953093B2 (en) 2001-09-06 2011-05-31 Broadcom Corporation TCP/IP reordering
US7620692B2 (en) * 2001-09-06 2009-11-17 Broadcom Corporation iSCSI receiver implementation
US6713201B2 (en) * 2001-10-29 2004-03-30 Hewlett-Packard Development Company, L.P. Systems including replaceable fuel cell apparatus and methods of using replaceable fuel cell apparatus
US20030081599A1 (en) * 2001-10-30 2003-05-01 Chui-Tsang Wu System and method for data transmission control
US7124198B2 (en) * 2001-10-30 2006-10-17 Microsoft Corporation Apparatus and method for scaling TCP off load buffer requirements by segment size
US20030095567A1 (en) * 2001-11-20 2003-05-22 Lo Man Kuk Real time protocol packet handler
US20030115350A1 (en) * 2001-12-14 2003-06-19 Silverback Systems, Inc. System and method for efficient handling of network data
US6760814B2 (en) * 2001-12-17 2004-07-06 Lsi Logic Corporation Methods and apparatus for loading CRC values into a CRC cache in a storage controller
US6800013B2 (en) 2001-12-28 2004-10-05 Shu-Ming Liu Interactive toy system
US7315976B2 (en) 2002-01-31 2008-01-01 Lsi Logic Corporation Method for using CRC as metadata to protect against drive anomaly errors in a storage array
US7535913B2 (en) * 2002-03-06 2009-05-19 Nvidia Corporation Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols
US7543087B2 (en) 2002-04-22 2009-06-02 Alacritech, Inc. Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device
JP4004389B2 (ja) * 2002-11-27 2007-11-07 富士通株式会社 バッファメモリ管理方法及びシステム
US8477780B2 (en) * 2003-03-26 2013-07-02 Alcatel Lucent Processing packet information using an array of processing elements
KR100490433B1 (ko) 2003-06-10 2005-05-17 삼성전자주식회사 광주사장치의 에프쎄타 렌즈 및 광주사장치
US7287092B2 (en) * 2003-08-11 2007-10-23 Sharp Colin C Generating a hash for a TCP/IP offload device
US7675898B2 (en) * 2003-08-20 2010-03-09 Nec Corporation Session relay apparatus for relaying data, and a data relaying method
US7483434B2 (en) * 2003-12-01 2009-01-27 International Business Machines Corporation Parallel TCP sender implementation
US6996070B2 (en) * 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
US20050223110A1 (en) 2004-03-30 2005-10-06 Intel Corporation Heterogeneous building block scalability
JP4058014B2 (ja) 2004-04-08 2008-03-05 株式会社日立製作所 パケット転送装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101428138B1 (ko) * 2007-12-18 2014-08-07 알까뗄 루슨트 통신 방법 및 디바이스

Also Published As

Publication number Publication date
JP2008517565A (ja) 2008-05-22
CN101120424A (zh) 2008-02-06
TWI407733B (zh) 2013-09-01
US7957379B2 (en) 2011-06-07
US20060083246A1 (en) 2006-04-20
KR101018575B1 (ko) 2011-03-03
TW200629819A (en) 2006-08-16
WO2006045057A3 (en) 2006-11-30
CN101120424B (zh) 2011-09-21
WO2006045057A2 (en) 2006-04-27

Similar Documents

Publication Publication Date Title
KR101018575B1 (ko) Rx fifo 버퍼를 사용하여 고속 네트워크애플리케이션에서 rx 패킷을 프로세싱하는 시스템 및방법
US8155135B2 (en) Network interface device with flow-oriented bus interface
US7849208B2 (en) System and method for TCP offload
US7835380B1 (en) Multi-port network interface device with shared processing resources
US9276993B2 (en) Apparatus and method for in-line insertion and removal of markers
US7688838B1 (en) Efficient handling of work requests in a network interface device
US7620057B1 (en) Cache line replacement with zero latency
US7535907B2 (en) TCP engine
US8478907B1 (en) Network interface device serving multiple host operating systems
US8427945B2 (en) SoC device with integrated supports for Ethernet, TCP, iSCSI, RDMA and network application acceleration
EP1732285B1 (en) Apparatus and methods for a high performance hardware network protocol processing engine
US7623450B2 (en) Methods and apparatus for improving security while transmitting a data packet
US20050223118A1 (en) System and method for placement of sharing physical buffer lists in RDMA communication
US20030172169A1 (en) Method and apparatus for caching protocol processing data
US20060274787A1 (en) Adaptive cache design for MPT/MTT tables and TCP context
WO2017000593A1 (zh) 报文处理方法及装置
US20080225874A1 (en) Stateful packet filter and table management method thereof
US20060034283A1 (en) Method and system for providing direct data placement support
US7404040B2 (en) Packet data placement in a processor cache
US20050286560A1 (en) Processing receive protocol data units
US20070127485A1 (en) Apparatus and method for transmitting packet IP offload
US20070019661A1 (en) Packet output buffer for semantic processor
US20060153215A1 (en) Connection context prefetch

Legal Events

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

Payment date: 20140205

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150120

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160201

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170213

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180212

Year of fee payment: 8