WO2005050949A1 - Method and system to protect a protocol control block for network packet processing - Google Patents
Method and system to protect a protocol control block for network packet processing Download PDFInfo
- Publication number
- WO2005050949A1 WO2005050949A1 PCT/US2004/036095 US2004036095W WO2005050949A1 WO 2005050949 A1 WO2005050949 A1 WO 2005050949A1 US 2004036095 W US2004036095 W US 2004036095W WO 2005050949 A1 WO2005050949 A1 WO 2005050949A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- packet
- cache
- unit
- fetch
- processing unit
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 230000008569 process Effects 0.000 claims abstract description 16
- 230000015654 memory Effects 0.000 claims description 23
- 238000004519 manufacturing process Methods 0.000 claims 7
- 238000010586 diagram Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/12—Protocol engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L2012/5603—Access techniques
Definitions
- Embodiments of the invention relate to the field of network packet processing, and more specifically to pre-fetching a protocol control block for network packet processing.
- the network interface card takes the packet and stores it in a main memory.
- the NIC may then send an interrupt to notify the central processing unit (CPU) about the packet.
- An interrupt unit may then check the destination of the interrupt, disable further interrupts from the NIC, initiate a software interrupt, and queue the packet for processing.
- the processing unit is ready to process the packet, the connection to which the packet belongs is identified. This may involve fetching a Protocol Control Block (PCB) associated with the packet. After the PCB is fetched, the CPU may start processing the packet.
- PCB Protocol Control Block
- the memory latency that occurs from fetching the PCB when the processing unit is ready to process the packet decreases the performance of the network device. As networking speeds increase, this memory latency becomes an increasing problem for performance and throughput.
- FIG. 1 is a block diagram illustrating one generalized embodiment of a system incorporating the invention.
- FIG. 2 is a block diagram illustrating an exemplary system incorporating the invention according to one embodiment of the invention.
- FIG. 3 is a flow diagram illustrating a method according to an embodiment of the invention.
- FIG. 4 is a block diagram illustrating a suitable computing environment in which certain aspects of the illustrated invention may be practiced.
- FIG. 1 a block diagram illustrates a system 100 according to one embodiment of the invention.
- the system 100 may include more components than those shown in Fig. 1. However, it is not necessary that all of these generally conventional components be shown in order to disclose an illustrative embodiment for practicing the invention.
- System 100 includes a receive unit 102 to receive packets from a network.
- the packets may be communicated in accordance with the Transmission Control Protocol (TCP/IP) specification.
- TCP/IP Transmission Control Protocol
- a particular series of packets may be referred to as a "connection" or "packet flow.”
- the context of a connection may be stored in a structure known as a Protocol Control Block (PCB). This context may be uniquely identified by the connection's source IP address, destination IP address, source port, destination port, and/or protocol type. For each packet received at receive unit 102, the PCB associated with the packet may need to be retrieved from memory.
- PCB Protocol Control Block
- Accessing the PCB from the memory for each packet sent and received has associated memory latency and bandwidth issues. To reduce these issues, a pre-fetch unit 104 fetches the PCB associated with a received packet into a cache
- a network interface card (NIC) 202 receives packets from a network.
- the packet is stored in a main memory 214 through memory controller 212.
- the NIC 202 sends an interrupt to notify a processing unit, such as 206, 208, or 210, about the packet.
- An interrupt unit 204 such as an interrupt service rotate (ISR) unit, checks the destination of the interrupt, disables further interrupts from the NIC, initiates a software interrupt, and queues the packet for processing.
- the packet is queued for processing by queuing a deferred procedure call (DPC).
- DPC deferred procedure call
- a pre-fetch of the PCB associated with the packet may be initiated.
- a pre-fetch of a packet header may also be initiated.
- the PCB and packet header may be pre-fetched into a cache, such as 216, 218, or 220.
- the pre-fetch may be done in hardware or software.
- a processing unit such as 206, 208, or 210
- the processing unit may fetch the PCB and packet header from its cache. Then, the packet may be processed. The processing unit may then enable interrupts from the NIC.
- pre-fetching may also be used on the send side to reduce memory latency.
- the PCB When a packet is queued for transmission out of the network, the PCB may be pre-fetched. There is usually some delay between the socket interface in the user space and the protocol stack processing in the kernel space. Therefore, when a send request is initiated for a packet, the PCB associated with the packet may be pre-fetched. When the kernel is ready to process the packet for transmission, the PCB has already been pre-fetched and is ready for processing. This reduces the memory latency on the send side.
- Fig. 3 illustrates a method according to one embodiment of the invention. At 300, a packet is received.
- a PCB associated with the packet is pre-fetched into a cache.
- a packet header is also prefetched into the cache.
- the packet is queued for processing.
- the PCB is retrieved from the cache.
- the packet's header is also retrieved from the cache. Then, the packet may be processed.
- Fig. 4 is a block diagram illustrating a suitable computing environment in which certain aspects of the illustrated invention may be practiced.
- the method described above may be implemented on a computer system 400 having components 402 - 412, including a processor 402, a memory 404, an Input/Output device 406, a data storage device 412, and a network interface 410, coupled to each other via a bus 408.
- the components perform their conventional functions known in the art and provide the means for implementing the system 100.
- Collectively, these components represent a broad category of hardware systems, including but not limited to general purpose computer systems and specialized packet forwarding devices.
- system 400 may be rearranged, and that certain implementations of the present invention may not require nor include all of the above components.
- additional components may be included in system 400, such as additional processors (e.g., a digital signal processor), storage devices, memories, and network or communication interfaces.
- additional processors e.g., a digital signal processor
- storage devices e.g., a hard disk drive
- memories e.g., a hard disk drives, optical drives, and the like.
- network or communication interfaces e.g., a network or communication interfaces.
- the content for implementing an embodiment of the method of the invention for example, computer program instructions, may be provided by any machine-readable media which can store data that is accessible by system 100, as part of or in addition to memory, including but not limited to cartridges, magnetic cassettes, flash memory cards, digital video disks, random access memories (RAMs), read-only memories (ROMs), and the like.
- the system 100 is equipped to communicate with such machine-readable media in a manner well-
- the content for implementing an embodiment of the method of the invention may be provided to the system 100 from any external device capable of storing the content and communicating the content to the system 100.
- the system 100 may be connected to a network, and the content may be stored on any device in the network.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
Description
Claims
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2004800331259A CN1879385B (en) | 2003-11-12 | 2004-10-29 | Method and system to pre-fetch a protocol control block for network packet processing |
DE602004010424T DE602004010424T2 (en) | 2003-11-12 | 2004-10-29 | METHOD AND SYSTEM FOR PROTECTING A PROTOCOL BLOCK FOR NETWORK PACKET PROCESSING |
EP04796807A EP1683321B1 (en) | 2003-11-12 | 2004-10-29 | Method and system to protect a protocol control block for network packet processing |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/712,640 | 2003-11-12 | ||
US10/712,640 US20050100042A1 (en) | 2003-11-12 | 2003-11-12 | Method and system to pre-fetch a protocol control block for network packet processing |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2005050949A1 true WO2005050949A1 (en) | 2005-06-02 |
Family
ID=34552689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2004/036095 WO2005050949A1 (en) | 2003-11-12 | 2004-10-29 | Method and system to protect a protocol control block for network packet processing |
Country Status (8)
Country | Link |
---|---|
US (1) | US20050100042A1 (en) |
EP (1) | EP1683321B1 (en) |
KR (1) | KR100816938B1 (en) |
CN (1) | CN1879385B (en) |
AT (1) | ATE379917T1 (en) |
DE (1) | DE602004010424T2 (en) |
TW (1) | TWI269559B (en) |
WO (1) | WO2005050949A1 (en) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050286526A1 (en) * | 2004-06-25 | 2005-12-29 | Sood Sanjeev H | Optimized algorithm for stream re-assembly |
US7761529B2 (en) * | 2004-06-30 | 2010-07-20 | Intel Corporation | Method, system, and program for managing memory requests by devices |
US7461173B2 (en) * | 2004-06-30 | 2008-12-02 | Intel Corporation | Distributing timers across processors |
US20060004933A1 (en) * | 2004-06-30 | 2006-01-05 | Sujoy Sen | Network interface controller signaling of connection event |
US20060031474A1 (en) * | 2004-07-19 | 2006-02-09 | Linden Cornett | Maintaining reachability measures |
EP2166730B1 (en) * | 2006-05-02 | 2014-09-24 | BlackBerry Limited | Method and system for optimizing metadata passing in a push content processing protocol |
KR100801004B1 (en) * | 2006-08-25 | 2008-02-05 | 삼성전자주식회사 | Apparatus and method for protocol matching of embedded AV content |
JP5028339B2 (en) * | 2008-06-09 | 2012-09-19 | キヤノン株式会社 | Communication apparatus and control method |
US20110228674A1 (en) * | 2010-03-18 | 2011-09-22 | Alon Pais | Packet processing optimization |
US8327047B2 (en) | 2010-03-18 | 2012-12-04 | Marvell World Trade Ltd. | Buffer manager and methods for managing memory |
US9465662B2 (en) * | 2011-10-17 | 2016-10-11 | Cavium, Inc. | Processor with efficient work queuing |
US10951525B2 (en) | 2019-01-04 | 2021-03-16 | Intel Corporation | Availability of context information for packet processing |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6434620B1 (en) * | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US20020165992A1 (en) * | 2001-05-03 | 2002-11-07 | International Business Machines Corporation | Method, system, and product for improving performance of network connections |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2986802B2 (en) * | 1989-03-13 | 1999-12-06 | 株式会社日立製作所 | Protocol high-speed processing method |
US5819112A (en) * | 1995-09-08 | 1998-10-06 | Microsoft Corporation | Apparatus for controlling an I/O port by queuing requests and in response to a predefined condition, enabling the I/O port to receive the interrupt requests |
US5881296A (en) * | 1996-10-02 | 1999-03-09 | Intel Corporation | Method for improved interrupt processing in a computer system |
US6021446A (en) * | 1997-07-11 | 2000-02-01 | Sun Microsystems, Inc. | Network device driver performing initial packet processing within high priority hardware interrupt service routine and then finishing processing within low priority software interrupt service routine |
CN1326573A (en) * | 1998-03-26 | 2001-12-12 | 格姆普拉斯公司 | Versatile interface smart card |
JP4294142B2 (en) * | 1999-02-02 | 2009-07-08 | 株式会社日立製作所 | Disk subsystem |
US6453360B1 (en) * | 1999-03-01 | 2002-09-17 | Sun Microsystems, Inc. | High performance network interface |
US6625149B1 (en) * | 1999-11-29 | 2003-09-23 | Lucent Technologies Inc. | Signaled receiver processing methods and apparatus for improved protocol processing |
US6990669B1 (en) * | 2000-03-21 | 2006-01-24 | Microsoft Corporation | Real-time scheduler |
US20020144004A1 (en) * | 2001-03-29 | 2002-10-03 | Gaur Daniel R. | Driver having multiple deferred procedure calls for interrupt processing and method for interrupt processing |
US6993613B2 (en) * | 2001-09-17 | 2006-01-31 | Intel Corporation | Methods and apparatus for reducing receive interrupts via paced ingress indication |
US7269663B2 (en) * | 2001-09-28 | 2007-09-11 | Intel Corporation | Tagging packets with a lookup key to facilitate usage of a unified packet forwarding cache |
US7219121B2 (en) * | 2002-03-29 | 2007-05-15 | Microsoft Corporation | Symmetrical multiprocessing in multiprocessor systems |
US7631106B2 (en) * | 2002-08-15 | 2009-12-08 | Mellanox Technologies Ltd. | Prefetching of receive queue descriptors |
US7240166B2 (en) * | 2003-05-01 | 2007-07-03 | International Business Machines Corporation | Method and apparatus for implementing packet work area accesses and buffer sharing |
US6981074B2 (en) * | 2003-10-14 | 2005-12-27 | Broadcom Corporation | Descriptor-based load balancing |
US7552232B2 (en) * | 2003-10-24 | 2009-06-23 | International Business Machines Corporation | Speculative method and system for rapid data communications |
-
2003
- 2003-11-12 US US10/712,640 patent/US20050100042A1/en not_active Abandoned
-
2004
- 2004-06-03 TW TW093115977A patent/TWI269559B/en not_active IP Right Cessation
- 2004-10-29 AT AT04796807T patent/ATE379917T1/en not_active IP Right Cessation
- 2004-10-29 DE DE602004010424T patent/DE602004010424T2/en not_active Expired - Lifetime
- 2004-10-29 EP EP04796807A patent/EP1683321B1/en not_active Expired - Lifetime
- 2004-10-29 CN CN2004800331259A patent/CN1879385B/en not_active Expired - Fee Related
- 2004-10-29 WO PCT/US2004/036095 patent/WO2005050949A1/en active IP Right Grant
- 2004-10-29 KR KR1020067009091A patent/KR100816938B1/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6434620B1 (en) * | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US20020165992A1 (en) * | 2001-05-03 | 2002-11-07 | International Business Machines Corporation | Method, system, and product for improving performance of network connections |
Non-Patent Citations (1)
Title |
---|
MURALI RANGARAJAN ET AL: "TCP Servers: Offloading TCP Processing in Internet Servers. Design, Implementation, and Performance", TECHNICAL REPORT, March 2002 (2002-03-01), RUTGERS UNIVERSITY, DEPARTMENT OF COMPUTER SCIENCE, XP002286342 * |
Also Published As
Publication number | Publication date |
---|---|
CN1879385A (en) | 2006-12-13 |
CN1879385B (en) | 2012-03-21 |
KR20060116203A (en) | 2006-11-14 |
DE602004010424T2 (en) | 2008-11-27 |
TW200518529A (en) | 2005-06-01 |
US20050100042A1 (en) | 2005-05-12 |
EP1683321B1 (en) | 2007-11-28 |
KR100816938B1 (en) | 2008-03-25 |
TWI269559B (en) | 2006-12-21 |
ATE379917T1 (en) | 2007-12-15 |
DE602004010424D1 (en) | 2008-01-10 |
EP1683321A1 (en) | 2006-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7631106B2 (en) | Prefetching of receive queue descriptors | |
WO2020236275A1 (en) | System and method for facilitating dynamic command management in a network interface controller (nic) | |
US9037810B2 (en) | Pre-fetching of data packets | |
US6963954B1 (en) | Method and apparatus for optimizing prefetching based on memory addresses | |
US6311212B1 (en) | Systems and methods for on-chip storage of virtual connection descriptors | |
US8161197B2 (en) | Method and system for efficient buffer management for layer 2 (L2) through layer 5 (L5) network interface controller applications | |
EP1683321B1 (en) | Method and system to protect a protocol control block for network packet processing | |
US20100106874A1 (en) | Packet Filter Optimization For Network Interfaces | |
US20110228674A1 (en) | Packet processing optimization | |
JP2007517286A (en) | TCP / IP offload device with reduced sequential processing | |
US7573895B2 (en) | Software assisted RDMA | |
US7447230B2 (en) | System for protocol processing engine | |
US20110125947A1 (en) | Read control in a computer i/o interconnect | |
US20030081601A1 (en) | Network interface sharing methods and apparatuses that support kernel mode data traffic and user mode data traffic | |
US9336162B1 (en) | System and method for pre-fetching data based on a FIFO queue of packet messages reaching a first capacity threshold | |
US6742075B1 (en) | Arrangement for instigating work in a channel adapter based on received address information and stored context information | |
US20060064546A1 (en) | Microprocessor | |
US7404040B2 (en) | Packet data placement in a processor cache | |
US11789658B2 (en) | Peripheral component interconnect express (PCIe) interface system and method of operating the same | |
US7401184B2 (en) | Matching memory transactions to cache line boundaries | |
JP2008517565A (en) | System and method for processing RX packets in high speed network applications using RX FIFO buffers | |
US7761587B2 (en) | Apparatus and method for transmitting packet IP offload | |
US20050246500A1 (en) | Method, apparatus and system for an application-aware cache push agent | |
US7720930B2 (en) | Systems and methods using NIC-based prefetching for host TCP context lookup | |
KR100532417B1 (en) | The low power consumption cache memory device of a digital signal processor and the control method of the cache memory device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 200480033125.9 Country of ref document: CN |
|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWE | Wipo information: entry into national phase |
Ref document number: 2004796807 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1020067009091 Country of ref document: KR |
|
WWP | Wipo information: published in national office |
Ref document number: 2004796807 Country of ref document: EP |
|
WWP | Wipo information: published in national office |
Ref document number: 1020067009091 Country of ref document: KR |
|
WWG | Wipo information: grant in national office |
Ref document number: 2004796807 Country of ref document: EP |