WO2005067255A1 - Method, apparatus, system, and article of manufacture for grouping packets - Google Patents

Method, apparatus, system, and article of manufacture for grouping packets Download PDF

Info

Publication number
WO2005067255A1
WO2005067255A1 PCT/US2004/040387 US2004040387W WO2005067255A1 WO 2005067255 A1 WO2005067255 A1 WO 2005067255A1 US 2004040387 W US2004040387 W US 2004040387W WO 2005067255 A1 WO2005067255 A1 WO 2005067255A1
Authority
WO
WIPO (PCT)
Prior art keywords
protocol
group
packets
operating system
interface
Prior art date
Application number
PCT/US2004/040387
Other languages
French (fr)
Inventor
Patrick Connor
Original Assignee
Intel Corporation
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 Intel Corporation filed Critical Intel Corporation
Priority to DE112004002378T priority Critical patent/DE112004002378B4/en
Priority to CN2004800370408A priority patent/CN1894924B/en
Priority to GB0609642A priority patent/GB2422997B/en
Publication of WO2005067255A1 publication Critical patent/WO2005067255A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/167Adaptation for transition between two IP versions, e.g. between IPv4 and IPv6
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols

Abstract

In certain embodiments, a first unit receives a plurality of packets, wherein the plurality of packets are capable of being processed according to at least a first protocol and a second protocol. The first unit sorts the plurality of packets into a first group and a second group, wherein all packets in the first group are capable of being processed according to the first protocol, and all packets in the second group are capable of being processed according to the second protocol. The first unit sends the first group and the second group to a second unit.

Description

METHOD, APPARATUS, SYSTEM, AND ARTICLE OF MANUFACTURE FOR GROUPING PACKETS
BACKGROUND 1. Field
[0001] The disclosure relates to a method, apparatus, system, and article of manufacture for grouping packets.
2. Background [0002] A network may be a system for communication between a plurality of devices. In networking, a communications protocol or a network protocol may be the specification of a set of rules for a particular type of communication. Different protocols may describe different aspects of a single communication. Taken together, the different protocols that describe different aspects of the single communication may form a protocol stack.
[0003] Computer networks may be implemented using a variety of protocol stack architectures, where a protocol stack is a particular software implementation of a computer networking protocol suite. A protocol stack may have a plurality of protocol modules. The protocol modules may be referred to as protocol layers in the protocol stack.
[0004] For example, a protocol stack may include a Transmission Control Protocol (TCP) layer running over an Internet Protocol (IP) layer, where the IP layer runs over an Ethernet layer. Operating systems may have software interfaces between various layers of protocol stacks. For example, the Microsoft Windows* operating system has the Network Driver Interface Specification (NDIS) interface. The NDIS interface may define a plurality of Application Programming Interfaces (API) for devices, such as, Network Interface cards (NIC). The NDIS APIs may be used for integrating protocol drivers and device drivers. Other operating systems may have other software interfaces for various layers of protocol stacks. BRIEF DESCRIPTION OF THE DRAWINGS
[0005] Referring now to the drawings in which like reference numbers represent corresponding parts throughout: FIG. 1 illustrates a computing environment in which certain embodiments are implemented; FIG. 2 illustrates how packets may be sorted in the computing environment illustrated in FIG. 1; FIG. 3 illustrates operations for grouping packets described with respect to FIGs. 1-2, in accordance with certain embodiments; FIG. 4 illustrates an exemplary grouping of packets, in accordance with certain embodiments; FIG. 5 illustrates operations implemented in accordance with certain embodiments; and FIG. 6 illustrates a computer architecture in which certain described embodiments are implemented.
DETAILED DESCRIPTION
[0006] In the following description, reference is made to the accompanying drawings which form a part hereof and which illustrate several embodiments. It is understood that other embodiments may be utilized and structural and operational changes may be made. [0007] FIG. 1 illustrates a computing environment 100 in which certain embodiments are implemented. A hardware device 102 is coupled to a host 104. While in the computing environment 100 the hardware device 102 is shown external to the host 104, in alternative embodiments the hardware device 102 may be internal to the host 104. The hardware device 102 may include any hardware device, such as, a network adapter, an I/O controller, a storage device, a modem, etc., that is capable of interfacing with the host 104 by sending and receiving packets. While a single hardware device 102 in shown coupled to the host 104, in certain alternative embodiments a plurality of hardware devices may be coupled to the host 104. The host 104 may be a computational platform, such as, a personal computer, a workstation, a server, a mainframe, a hand held computer, a palm top computer, a telephony device, a network appliance, a blade computer, etc. [0008] The host 104 may include one or more protocol layers 106a...106n, an operating system interface 108, and a device driver 110. The host may 104 may include additional components (not shown) such as a processor, a memory, and an operating system.
[0009] In certain embodiments, the protocol layers 106a...106n may include any protocol layer, such as, Internet Packet Exchange / Sequential Packet exchange (IPX/SPX*),
NetBios Extended User Interface (NetBEUI*), Internet Protocol Version 4 (IPv4), etc.
IPX/SPX is a local-area network communications protocol that exchanges information between network clients, applications, and network peripherals. NetBEUI is an enhanced version of the NetBIOS protocol used by various network operating systems. IPv4 is an Internet Protocol over which other protocols, such as, the Transmission Control Protocol
(TCP), can run. Additional protocol layers such as Internet Protocol version 6 (IPv6) may also be included in the protocol layers 106a...106n.
[0010] In certain embodiments the operating system interface 108 may include an NDIS
6 interface or other interfaces. The operating system interface 108 may be used for interfacing the protocol layers 106a...106n with the device driver 110. In certain embodiments, the operating system interface 108 may include APIs capable of processing groups of packets.
[0011] The device driver 110 may be a program that controls the hardware device 102.
The device driver 110 may act like a translator between the hardware device 102 and the operating system interface 108. The device driver 110 may accept commands from the operating system interface 108 and translate the accepted commands into specialized commands for the hardware device 102. In certain embodiments, in which the hardware device 102 is a network adapter, the device driver 110 may be a driver for the network adapter. [0012] FIG. 1 illustrates an embodiment in which the device driver 110 allows data and commands to be exchanged between the operating system interface 108 and the hardware device 102, where the operating system interface 108 may allow data and commands to be exchanged for a plurality of protocol layers 106a...106n.
[0013] FIG. 2 illustrates how packets may be sorted in the computing environment 100 illustrated in FIG. 1. The hardware device 102, such as a network adapter or an I/O controller, receives a plurality of packets 200a...200m. In certain embodiments, the packets 200a...200m may arrive at the hardware device 102 over a network (not shown), such as, a local area network, a wide area network, the Internet, an intranet, etc. [0014] The hardware device 102 sends the packets 200a...200m to the device driver 110. The packets 200a...200m may be sent in the same order in which the packets are received by the hardware device 102. In certain embodiments, where packet order is not important, the packets 200a...200m may be sent in a different order than the order in which the packets are received by the hardware device 102. However, packet order is maintained within any end-to-end communication, such as, a TCP connection. Furthermore, the hardware device 102 may sent a packet to the device driver 110, in response to the packet arriving at the hardware device 102 or may wait for a plurality of packets to arrive at the hardware device 102 before sending the plurality of packets to the device driver 110. [0015] In association with a packet 200a...200m that is sent by the hardware device 102, the hardware device 102 may indicate a protocol layer that is capable of processing the packet 200a...200m. For example, the hardware device 102 may send packet 200a to the device driver 110 and indicate that packet 200a is capable of being processed by an IPX/SPX protocol layer, such as protocol layer A 106a. In alternative embodiments, a packet 200a...200m may include information on the protocol layer that is capable of processing the packet 200a...200m, and the hardware device 102 may not indicate the protocol layer of a packet while sending the packet to the device driver 110. [0016] The device driver 110 receives the packets 200a...200m from the hardware device 102 and sorts the packets into one or more packet bundles 202a...202n corresponding to the protocol layers 106a...106n. For example, packet bundle A 202a may include the packets 204a...204r that are capable of being processed by protocol layer A 106a, packet bundle B 202b may include the packets 206a...206s that are capable of being processed by protocol layer B 106b, and packet bundle N 202n may include the packets 208a...208t that are capable of being processed by protocol layer N 106n, where the packets 204a...204r, 206a...206s, 208a...208t correspond to the packets 200a...200m that are received by the device driver 110. All packets included in a packet bundle are capable of being processed by a single protocol layer. For example, all packets included in the packet bundle A 202 are capable of being processed by the protocol layer A 106a, all packets in the packet bundle B 202b are capable of being processed by the protocol layer B 106b, and all packets in the packet bundle N 202n are capable of being processed by the protocol layer N 106n.
[0017] The device driver 110 sends the packet bundles 202a...202n to the operating system interface 108. The operating system interface 108 forwards the packet bundles 202a...202n to the corresponding protocol layer 106a...106n for processing. For example, in certain embodiments the operating system interface 108 may send the packet bundle A 202a to the protocol layer A 106a, the packet bundle B 202b to the protocol layer B 106b, the packet bundle N 202n to the protocol layer N 106n. Packet order is maintained within any end-to-end communication, such as, a TCP connection, by both the device driver 110 and the operating system interface 108.
[0018] For example, in certain embodiments if the packets 200a...200m can collectively be processed by the IPX/SPX, NetBEUI and IPv4 protocol layers, then the device driver 110 may sort the packets 200a...200m into packets bundles corresponding to the IPX/SPX, NetBEUI and IPv4 protocol layers. In certain embodiments, the device driver 110 may adopt various strategies that take into consideration the latency for processing packets in deciding the number of packets to bundle in a packet bundle 202a...202n. [0019] The operating system interface 108 may forward the packets in the packet bundle corresponding to the IPX/SPX protocol layer to be processed by the IPX/SPX protocol layer. Additionally, the operating system interface 108 forwards the packets in the packet bundle corresponding to the NetBEUI protocol layer to be processed by the NetBEUI protocol layer and further forwards the packets in the packet bundle corresponding to the IPv4 protocol layer to be processed by the IPv4 layer.
[0020] FIG. 2 illustrates certain embodiments in which the device driver 110 sorts incoming packets into one or more packet bundles, where a packet bundle includes packets that are capable of being processed by the same protocol. The device driver 110 sends the packet bundles to the operating system interface 108, such as the NDIS 6 interface. The operating system interface 108 may send the packet bundles to the corresponding protocol layers for further processing. [0021] FIG. 3 illustrates operations for grouping the packets 200a...200m described with respect to FIGs. 1-2, in accordance with certain embodiments.
[0022] Control starts at block 300, where the hardware device 102 sends a sequence of packets 200a...200m to the device driver 110 , and for each packet 200a...200m indicates to the device driver 110, the corresponding protocol layer 106a...l06n that is capable of processing the packet.
[0023] The device driver 110 receives (at block 302) the packets 200a...200m. The device driver sorts (at block 304) the received packets 200a...200m into one or more packet bundles 202a...202n based on the protocol layer capable of processing each of the received packets 200a...200m, such that, all packets sorted into a packet bundle are capable of being processing by the same protocol layer and different packet bundles may be capable of being processed by different protocol layers. [0024] The device driver 110 sends (at block 306) the packet bundles 202a...202n to the operating system interface 108. The operating system interface 108 forwards (at block 308) the packet bundles 202a...202n to the corresponding protocol layer 106a....106n for processing.
[0025] FIG. 3 illustrates certain embodiments, in which the device driver 110 sorts the received packets 200a...200m into packet bundles 202a...202n, where each packet bundle includes packets that are capable of being processed by the same protocol and different packet bundles includes packets that may be processed by different protocols. The device driver sends the packet bundles 202a...202n to the operating system interface 108, and the operating system interface 108 forwards the packets bundles 202a...202n to the corresponding protocol layer 106a...106n for processing. [0026] FIG. 4 illustrates an exemplary grouping of packets by the device driver 110, in accordance with certain embodiments.
[0027] The device driver 110 takes an input 400 from the hardware device 102 and sends an output 402 to the operating system interface 108, where in certain embodiments the input 400 includes packets 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, where each packet is capable of being processed by one protocol layer, such as, IPX/SPX, NetBEUI, or IPv4. For example, Packet A 404 is capable of being processed by the IPX/SPX protocol. The device driver 110 sorts the packets in the input 400 into three groups based on the protocol capable of processing the packets in the input 400. [0028] For example, in certain embodiments the device driver 110 may determine that packets 404, 408, 416, 420 are capable of being processed by the IPX/SPX protocol layer, packets 406, 412, 414 are capable of being processed by the IPv4 protocol layer, and packets 410, 418, 420 are capable of being processed by the NetBEUI protocol layer. The device driver 110 may sort the packets received in the input 400 into an IPX/SPX packet bundle 424 that includes the packets 404, 408, 416, 420, an IPv4 packet bundle 426 that includes the packets 406, 412, 414, and a NetBEUI packet bundle 428 that includes the packets 410, 418, 420. The device driver 110 sends the output 402, comprising the packet bundles 424, 426, 428, to the operating system interface 108.
[0029] FIG. 4 illustrates an exemplary embodiment in which the device driver 110 sorts packets into a plurality of packet bundles, where each packet bundle includes packets that can be processed by the same protocol layer, and different packet bundles include packets that may be processed by different protocol layers. The device driver 110 forwards the packet bundles to the operating system interface 108.
[0030] FIG. 5 illustrates operations for grouping packets implemented in the computing environment 100, in accordance with certain embodiments. In certain embodiments, the operations may be implemented in the device driver 110, whereas in other embodiments the operations may be implemented in the hardware device 102. [0031] Control starts at block 500, where a first unit receives a plurality of packets, wherein the plurality of packets are capable of being processed according to at least a first protocol and a second protocol. In certain embodiments the first unit is the device driver 110. In certain embodiments, the first unit is the hardware device 102. [0032] The first unit sorts (at block 502) the plurality of packets into a first group and a second group, wherein all packets in the first group are capable of being processed according to the first protocol, and all packets in the second group are capable of being processed according to the second protocol.
[0033] The first unit sends (at block 504) the first group and the second group to a second unit. In certain embodiments, in which the first unit the device driver 100, the second unit may comprise the operating system interface 108. In certain other embodiments, the first unit may be the hardware device 102 and the second unit may comprise the device driver 110. In such a case, the device driver 110 does not have to parse the incoming packets for the operating system interface 108. In certain additional embodiments, the first unit may be the hardware device 102 and the second unit may comprise the operating system interface 108.
[0034] Certain embodiments group received packets by protocol type. The groups of packets are sent to corresponding protocol layers for processing. If the operating system interface 108 supports multi-packet API's for transmitting and receiving packets, the embodiments may use the features of the operating system interface. [0035] The embodiments maintain packet orders within any given end-to-end communication such as a TCP connection. The embodiments generate fewer calls to packets arrival APIs of the protocol layers because packets are bundled together. The device driver generated packet bundles can be forwarded to the protocol layers without sending individual packets.
[0036] Certain embodiments allow systems, such as, servers, that may receive heterogeneous packets from various systems in an interleaved manner to take advantage of the multi-packet APIs of the operating system interface 108, such as, NDIS 6.
[0037] The described techniques may be implemented as a method, apparatus or article of manufacture involving software, firmware, micro-code, hardware and/or any combination thereof. The term "article of manufacture" as used herein refers to program instructions, code and/or logic implemented in circuitry (e.g., an integrated circuit chip, Programmable Gate Array (PGA), ASIC, etc.) and/or a computer readable medium (e.g., magnetic storage medium, such as hard disk drive, floppy disk, tape), optical storage (e.g., CD- ROM, DVD-ROM, optical disk, etc.), volatile and non- volatile memory device (e.g., Electrically Erasable Programmable Read Only Memory (EEPROM), Read Only Memory (ROM), Programmable Read Only Memory (PROM), Random Access Memory (RAM), Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), flash, firmware, programmable logic, etc.). Code in the computer readable medium may be accessed and executed by a machine, such as, a processor. In certain embodiments, the code in which embodiments are made may further be accessible through a transmission medium or from a file server via a network. In such cases, the article of manufacture in which the code is implemented may comprise a transmission medium, such as a network transmission line, wireless transmission media, signals propagating through space, radio waves, infrared signals, etc. Of course, those skilled in the art will recognize that many modifications may be made without departing from the scope of the embodiments, and that the article of manufacture may comprise any information bearing medium known in the art.
[0038] FIG. 6 illustrates a block diagram of a computer architecture in which certain embodiments are implemented. FIG. 6 illustrates one embodiment of the host system 104 and certain elements of the hardware device 102. The host system 104 and the hardware 102 may implement a computer architecture 600 having a processor 602, a memory 604 (e.g., a volatile memory device), and storage 606. Not all elements of the computer architecture 600 are found in the host system 104 and the hardware device 102. The storage 606 may include a non-volatile memory device (e.g., EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash, firmware, programmable logic, etc.), magnetic disk drive, optical disk drive, tape drive, etc. The storage 606 may comprise an internal storage device, an attached storage device and/or a network accessible storage device. Programs in the storage 606 may be loaded into the memory 604 and executed by the processor 602 in a manner known in the art. The architecture may further include a network card 608 to enable communication with a network. The architecture may also include at least one input device 610, such as a keyboard, a touchscreen, a pen, voice-activated input, etc., and at least one output device 612, such as a display device, a speaker, a printer, etc. [0039] In certain embodiments, the device 102, such as, a network adapter may be included in a computer system including any storage controller, such as, a Small
Computer System Interface (SCSI), AT Attachment Interface (ATA), Redundant Array of Independent Disk (RAID), etc., controller, that manages access to a non-volatile storage device, such as a magnetic disk drive, tape media, optical disk, etc. In alternative embodiments, the device 102 may be included in a system that does not include a storage controller, such as certain hubs and switches.
[0040] Certain embodiments may be implemented in a computer system including a video controller to render information to display on a monitor coupled to the computer system including the device 102, such as, a network adapter, where the computer system may comprise a desktop, workstation, server, mainframe, laptop, handheld computer, etc. An operating system may be capable of execution by the computer system, and the video controller may render graphics output via interactions with the operating system. Alternatively, some embodiments may be implemented in a computer system that does not include a video controller, such as a switch, router, etc. Furthermore, in certain embodiments the device may be included in a card coupled to a computer system or on a motherboard of a computer system. [0041] At least certain of the operations of FIGs. 3 and 5 may be performed in parallel as well as sequentially. In alternative embodiments, certain of the operations may be performed in a different order, modified or removed.
[0042] Furthermore, many of the software and hardware components have been described in separate modules for purposes of illustration. Such components may be integrated into a fewer number of components or divided into a larger number of components.
Additionally, certain operations described as performed by a specific component may be performed by other components. In certain embodiments the network adapter may be a specialized part of the central processing unit of the host system. [0043] The data structures and components shown or referred to in FIGs. 1-6 are described as having specific types of information. In alternative embodiments, the data structures and components may be structured differently and have fewer, more or different fields or different functions than those shown or referred to in the figures.
[0044] Therefore, the foregoing description of the embodiments has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the embodiments to the precise form disclosed. Many modifications and variations are possible in light of the above teaching.
* NetBEUI is a trademark of International Business Machines Corp. * IPX and SPX are trademarks of Novell, Inc.
* Microsoft Windows is a trademark of Microsoft Corp.

Claims

WHAT IS CLAIMED IS: 1. A method, comprising: receiving, by a first unit, a plurality of packets, wherein the plurality of packets are capable of being processed according to at least a first protocol and a second protocol; sorting, by the first unit, the plurality of packets into a first group and a second group, wherein all packets in the first group are capable of being processed according to the first protocol, and wherein all packets in the second group are capable of being processed according to the second protocol; and sending, by the first unit, the first group and the second group to a second unit.
2. The method of claim 1 , wherein the second unit comprises an operating system interface, the method further comprising: forwarding, by the operating system interface, the first group to a first protocol layer that is capable of processing the first group according to the first protocol; and forwarding, by the operating system interface, the second group to a second protocol layer that is capable of processing the second group according to the second protocol.
3. The method of claim 1, wherein the first unit comprises a device driver corresponding to a hardware device, and wherein the second unit comprises an operating system interface, the method further comprising: receiving, by the hardware device, the plurality of packets; and forwarding the plurality of packets, by the hardware device, to the device driver; and indicating, by the hardware device, protocols capable of processing the plurality of packets to the device driver.
4. The method of claim 1, wherein the first unit comprises a device driver, and wherein sorting further comprises: determining, by the device driver, from information associated with one packet of the plurality of packets that the one packet is capable of being processed according to the first protocol; and associating the one packet with the first group.
5. The method of claim 1, wherein the first unit comprises a hardware device that is coupled to a host system, and wherein the second unit is implemented in the host system.
6. The method of claim 1, wherein the second unit includes application programming interfaces for handling transmit and receive operations corresponding to a plurality of protocols including the first protocol and the second protocol
7. The method of claim 1, wherein the second unit comprises an operating system interface, wherein the operating system interface is capable of forwarding one packet received by the operating system interface to one protocol layer capable of processing the one packet.
8. The method of claim 1, wherein the first protocol comprises an Internet Protocol version 4 and the second protocol comprises an Internet Protocol version 6.
9. A device, capable of communicating with an interface, comprising: a processing unit; program logic including code capable of causing the processing unit to perform: (i) receiving a plurality of packets, wherein the plurality of packets are capable of being processed according to at least a first protocol and a second protocol; (ii) sorting, the plurality of packets into a first group and a second group, wherein all packets in the first group are capable of being processed according to the first protocol, and wherein all packets in the second group are capable of being processed according to the second protocol; and (iii) sending the first group and the second group to the interface.
10. The device of claim 9, wherein the interface comprises code configured to implement an operating system interface, wherein the operating system interface is capable of forwarding the first group to a first protocol layer that is capable of processing the first group according to the first protocol, and wherein the operating system interface is capable of forwarding the second group to a second protocol layer that is capable of processing the second group according to the second protocol.
11. The device of claim 9, wherein the device is a hardware device, wherein the interface comprises a device driver corresponding to the hardware device, wherein the device driver is capable of communicating with an operating system interface, wherein the operating system interface is capable of forwarding the first group to a first protocol layer that is capable of processing the first group according to the first protocol, and wherein the operating system interface is capable of forwarding the second group to a second protocol layer that is capable of processing the second group according to the second protocol.
12. The device of claim 9, wherein the device is a network adapter, wherein the interface comprises a device driver corresponding to the network adapter, wherein the device driver is capable of communication with an operating system interface, and wherein the operating system interface comprises a multi-protocol application programming interface.
13. The device of claim 9, wherein the device is a network controller coupled to a host system, and wherein the interface is implemented in the host system.
14. The device of claim 9, wherein the interface includes application programming interfaces for handling transmit and receive operations corresponding to a plurality of protocols including the first protocol and the second protocol
15. The device of claim 9, wherein the interface comprises an operating system interface, wherein the operating system interface is capable of forwarding one packet received by the operating system interface to one protocol layer capable of processing the one packet.
16. The device of claim 9, wherein the first protocol comprises an Internet Protocol version 4 and the second protocol comprises an Internet Protocol version 6.
17. A system, comprising: a computational platform; a data storage coupled to the computational platform; a data storage controller to manage Input/Output access to the data storage, wherein the data storage is coupled to the computational platform; code configured to implement an interface in the computational platform; and a device coupled to the computational platform, wherein the device is capable of receiving a plurality of packets, wherein the plurality of packets are capable of being processed according to at least a first protocol and a second protocol, wherein the device is capable of sorting the plurality of packets into a first group and a second group, wherein all packets in the first group are capable of being processed according to the first protocol, wherein all packets in the second group are capable of being processed according to the second protocol, and wherein the device is capable of transmitting the first group and the second group to the interface.
18. The system of claim 17, wherein the device comprises a network adapter, wherein the interface comprises an operating system interface, wherein the operating system interface is capable of forwarding the first group to a first protocol layer that is capable of processing the first group according to the first protocol, and wherein the operating system interface is capable of forwarding the second group to a second protocol layer that is capable of processing the second group according to the second protocol.
19. The system of claim 17, wherein the device comprises a network adapter, wherein the interface is a device driver corresponding to the network adapter, wherein the device driver is capable of communicating with an operating system interface in the computational platform, and wherein the operating system interface is capable of forwarding the first group to a first protocol layer that is capable of processing the first group according to the first protocol, and wherein the operating system interface is capable of forwarding the second group to a second protocol layer that is capable of processing the second group according to the second protocol.
20. An article of manufacture for communicating with an interface, wherein the article of manufacture is capable of causing operations, the operations comprising: receiving the plurality of packets, wherein the plurality of packets are capable of being processed according to at least a first protocol and a second protocol; sorting the plurality of packets into a first group and a second group, wherein all packets in the first group are capable of being processed according to the first protocol, and wherein all packets in the second group are capable of being processed according to the second protocol; and sending the first group and the second group to the interface.
21. The article of manufacture of claim 20, wherein the interface comprises an operating system interface, the operations further comprising: forwarding, by the operating system interface, the first group to a first protocol layer that is capable of processing the first group according to the first protocol; and forwarding, by the operating system interface, the second group to a second protocol layer that is capable of processing the second group according to the second protocol.
22. The article of manufacture of claim 20, wherein the article of manufacture comprises a device driver corresponding to a hardware device, and wherein the interface comprises an operating system interface, the operations further comprising: receiving, by the hardware device, the plurality of packets; and forwarding the plurality of packets, by the hardware device, to the device driver; and indicating, by the hardware device, protocols capable of processing the plurality of packets to the device driver.
23. The article of manufacture of claim 20, wherein the article of manufacture comprises a device driver, and wherein sorting further comprises: determining, by the device driver, from information associated with one packet of the plurality of packets that the one packet is capable of being processed according to the first protocol; and associating the one packet with the first group.
24. The article of manufacture of claim 20, wherein the article of manufacture is capable of being implemented in a hardware device that is coupled to a host system, and wherein the interface is implemented in the host system.
25. The article of manufacture of claim 20, wherein the interface includes application programming interfaces for handling transmit and receive operations corresponding to a plurality of protocols including the first protocol and the second protocol.
26. The article of manufacture of claim 20, wherein the interface comprises an operating system interface, wherein the operating system interface is capable of forwarding one packet received by the operating system interface to one protocol layer capable of processing the one packet.
27. The article of manufacture of claim 20, wherein the first protocol comprises an Internet Protocol version 4 and the second protocol comprises an Internet Protocol version 6.
28. The article of manufacture of claim 20, wherein the article of manufacture is a device driver.
PCT/US2004/040387 2003-12-19 2004-12-03 Method, apparatus, system, and article of manufacture for grouping packets WO2005067255A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE112004002378T DE112004002378B4 (en) 2003-12-19 2004-12-03 Method, apparatus, system and article for grouping packages
CN2004800370408A CN1894924B (en) 2003-12-19 2004-12-03 Method, apparatus, system, and article for grouping packets
GB0609642A GB2422997B (en) 2003-12-19 2004-12-03 Method, apparatus, system, and article of manufacture for grouping packets

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/741,030 2003-12-19
US10/741,030 US7814219B2 (en) 2003-12-19 2003-12-19 Method, apparatus, system, and article of manufacture for grouping packets

Publications (1)

Publication Number Publication Date
WO2005067255A1 true WO2005067255A1 (en) 2005-07-21

Family

ID=34678031

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2004/040387 WO2005067255A1 (en) 2003-12-19 2004-12-03 Method, apparatus, system, and article of manufacture for grouping packets

Country Status (6)

Country Link
US (1) US7814219B2 (en)
CN (1) CN1894924B (en)
DE (1) DE112004002378B4 (en)
GB (1) GB2422997B (en)
TW (1) TWI280014B (en)
WO (1) WO2005067255A1 (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7623450B2 (en) * 2006-03-23 2009-11-24 International Business Machines Corporation Methods and apparatus for improving security while transmitting a data packet
US8762460B2 (en) * 2009-07-13 2014-06-24 Qualcomm Incorporated Group communication sessions between session participants communicating via two or more different contact protocols within a wireless communications system
JP5696854B2 (en) * 2010-05-19 2015-04-08 日本電気株式会社 Packet retransmission control apparatus and packet retransmission control method
GB201101875D0 (en) * 2011-02-03 2011-03-23 Roke Manor Research A method and apparatus for communications analysis
CN102256293B (en) * 2011-04-18 2014-08-13 电子科技大学 Demand routing gateway of Ad hoc fusion network and driver design method thereof
CN102938763B (en) * 2012-11-09 2015-11-25 北京奇虎科技有限公司 The application connecting system of network application access network operation platform and method
WO2015063539A1 (en) * 2013-10-28 2015-05-07 Pismo Labs Technology Ltd. Methods and systems for transmitting and receiving data
US11962543B2 (en) * 2019-11-15 2024-04-16 Qualcomm Incorporated Wireless device full duplex cooperative schemes

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485460A (en) * 1994-08-19 1996-01-16 Microsoft Corporation System and method for running multiple incompatible network protocol stacks
EP0982909A2 (en) * 1998-08-28 2000-03-01 Nokia OYJ Internet protocol flow detection
EP1359724A1 (en) * 2002-04-30 2003-11-05 Microsoft Corporation Method to offload a network stack

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1014641A1 (en) * 1998-12-22 2000-06-28 Telefonaktiebolaget Lm Ericsson Method and system for reducing the processing time of data in communication networks
US6427169B1 (en) * 1999-07-30 2002-07-30 Intel Corporation Parsing a packet header
US6618397B1 (en) * 2000-10-05 2003-09-09 Provisionpoint Communications, Llc. Group packet encapsulation and compression system and method
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
US6957281B2 (en) * 2002-01-15 2005-10-18 Intel Corporation Ingress processing optimization via traffic classification and grouping
US20030231627A1 (en) * 2002-06-04 2003-12-18 Rajesh John Arbitration logic for assigning input packet to available thread of a multi-threaded multi-engine network processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485460A (en) * 1994-08-19 1996-01-16 Microsoft Corporation System and method for running multiple incompatible network protocol stacks
EP0982909A2 (en) * 1998-08-28 2000-03-01 Nokia OYJ Internet protocol flow detection
EP1359724A1 (en) * 2002-04-30 2003-11-05 Microsoft Corporation Method to offload a network stack

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"THE LAYERED APPROACH: THE OSI MODEL", DATA AND COMPUTER COMMUNICATIONS, XX, XX, 1991, pages 446 - 456, XP000917810 *

Also Published As

Publication number Publication date
TW200524351A (en) 2005-07-16
CN1894924B (en) 2011-06-08
US7814219B2 (en) 2010-10-12
US20050138190A1 (en) 2005-06-23
GB0609642D0 (en) 2006-06-28
DE112004002378T5 (en) 2006-11-16
DE112004002378B4 (en) 2010-01-14
GB2422997A (en) 2006-08-09
CN1894924A (en) 2007-01-10
GB2422997B (en) 2007-07-11
TWI280014B (en) 2007-04-21

Similar Documents

Publication Publication Date Title
US20220255884A1 (en) System and method for facilitating efficient utilization of an output buffer in a network interface controller (nic)
US7400639B2 (en) Method, system, and article of manufacture for utilizing host memory from an offload adapter
US8660130B2 (en) Transmitting a packet
CN1212574C (en) End node partitioning using local identifiers
US6888792B2 (en) Technique to provide automatic failover for channel-based communications
US6678746B1 (en) Processing network packets
US7664892B2 (en) Method, system, and program for managing data read operations on network controller with offloading functions
US6442617B1 (en) Method and system for filtering multicast packets in a peripheral component environment
US6757746B2 (en) Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
US7515596B2 (en) Full data link bypass
US20050163123A1 (en) Method and apparatus for implementing a MAC address pool for assignment to a virtual interface aggregate
US20040057434A1 (en) Multi-data receive processing according to a data communication protocol
US8792487B2 (en) Communication path selection
US6683882B1 (en) Method and system for directing transmission of IPX control packets to influence reception of IPX data packets
US20090147677A1 (en) System, method, and apparatus for load-balancing to a plurality of ports
CN1267026A (en) System and method allowing server remote access to assets information in computer system
US7814219B2 (en) Method, apparatus, system, and article of manufacture for grouping packets
US20060168400A1 (en) Packet data placement in a processor cache
WO2005101769A1 (en) Configuration of redirection tables
US8050266B2 (en) Low impact network debugging
US20080002701A1 (en) Network interface card virtualization based on hardware resources and software rings
US20050141434A1 (en) Method, system, and program for managing buffers
JPWO2004054186A1 (en) Data relay apparatus, associative memory device, and associative memory device utilization information retrieval method
CN1578267A (en) Method, system, and program for processing a packet to transmit on a network in a host system
CN1228717C (en) Mechanism for accelerating converted network addresses and its method

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200480037040.8

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 IS IT LT 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: 2004812824

Country of ref document: EP

WWW Wipo information: withdrawn in national office

Ref document number: 2004812824

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 0609642.4

Country of ref document: GB

Ref document number: 0609642

Country of ref document: GB

RET De translation (de og part 6b)

Ref document number: 112004002378

Country of ref document: DE

Date of ref document: 20061116

Kind code of ref document: P

WWE Wipo information: entry into national phase

Ref document number: 112004002378

Country of ref document: DE

REG Reference to national code

Ref country code: DE

Ref legal event code: 8607