Method and apparatus for multicast packet reception
DCFirst Claim
1. A method for establishing filtering for incoming data packets to be received from a network by a receiving device having an operating system and a network interface device, comprising the steps of the operating system:
- receiving a first request to deliver a future incoming data packet to a first user level endpoint, the first request indicating first packet header properties to look for;
determining from the first packet header properties whether they are of a character that permits a user level process to make a second request to deliver the future incoming data packet also to a second user level endpoint; and
only if the first packet header properties are not of such a character, programming the network interface device to deliver a future incoming data packet having the first packet header properties to the first user level endpoint.
7 Assignments
Litigations
0 Petitions
Accused Products
Abstract
Roughly described, incoming data packets are delivered by the NIC directly to at least two user level endpoints. In an aspect, only filters that cannot be ambiguous are created in the NIC. In another aspect, the NIC maintains a filter table supporting direct delivery of incoming unicast and multicast data packets to one user level endpoint. Additional requests to join the same multicast group cause replacement of the NIC filter with one in the kernel. In another aspect, a NIC has limited capacity to maintain multicast group memberships. In response to a new multicast filter request, the kernel establishes it in the NIC only if the NIC still has sufficient capacity; otherwise it is established in the kernel.
199 Citations
35 Claims
-
1. A method for establishing filtering for incoming data packets to be received from a network by a receiving device having an operating system and a network interface device, comprising the steps of the operating system:
-
receiving a first request to deliver a future incoming data packet to a first user level endpoint, the first request indicating first packet header properties to look for; determining from the first packet header properties whether they are of a character that permits a user level process to make a second request to deliver the future incoming data packet also to a second user level endpoint; and only if the first packet header properties are not of such a character, programming the network interface device to deliver a future incoming data packet having the first packet header properties to the first user level endpoint. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system for establishing filtering for incoming data packets to be received from a network, for use with a network interface device, comprising, in a receiving device:
-
a memory subsystem; and a data processor coupled to the memory subsystem, the data processor configured to; receive a first request from a user level process to deliver a future incoming data packet to a first user level endpoint, the first request indicating first packet header properties to look for; determine from the first packet header properties whether they are of a character that permits a user level process to make a second request to deliver the future incoming data packet also to a second user level endpoint; and only if the first packet header properties are not of such a character, program the network interface device to deliver a future incoming data packet having the first packet header properties to the first user level endpoint.
-
-
9. A method for establishing filtering for incoming data packets to be received from a network, for use with a network interface device by a host system,
the host system configured to have an operating system having a network protocol stack and further having a memory subsystem and a data processor coupled to the memory subsystem, the method comprising the steps of: -
in response to receiving a first request for a first user level endpoint to join a first multicast group, data processor programming the network interface device to deliver future incoming data packets of the first multicast group to the first user level endpoint in a manner that at least part of a header of the future incoming data packets, including an identification of at least one of the first multicast group and the first user level endpoint, bypasses the operating system network protocol stack; and in response to receiving a second request for a second user level endpoint to join the first multicast group, the data processor; causing the network interface device to deliver future incoming data packets of the first multicast group to the operating system and not to the first user level endpoint; and causing the operating system to deliver future incoming data packets of the first multicast group, to both the first and second user level endpoints. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A host system for establishing filtering for incoming data packets to be received from a network, for use with a network interface device, the host system being configured to have an operating system having a network protocol stack, comprising:
-
a memory subsystem; and a data processor coupled to the memory subsystem, the data processor configured to, in response to a first request for a first user level endpoint to join a first multicast group, program the network interface device to deliver future incoming data packets of the first multicast group to the first user level endpoint in a manner that at least part of a header of the future incoming data packets, including an identification of at least one of the first multicast group and the first user level endpoint, bypasses the operating system network protocol stack, and the data processor is further configured to, in response to a second request for a second user level endpoint to join the first multicast group; cause the network interface device to deliver future incoming data packets of the first multicast group to the operating system and not to the first user level endpoint; and cause the operating system to deliver future incoming data packets of the first multicast group, to both the first and second user level endpoints. - View Dependent Claims (19, 20)
-
-
21. A host system for establishing filtering for incoming data packets to be received from a network, for use with a network interface device, the host system being configured to have an operating system having a network protocol stack, comprising:
-
a memory subsystem; and a data processor coupled to the memory subsystem, the data processor configured to, in response to a first request for a first user level endpoint to join a first multicast group, program the network interface device to deliver future incoming data packets of the first multicast group to the first user level endpoint in a manner that at least part of a header of the future incoming data packets, including an identification of at least one of the first multicast group and the first user level endpoint, bypasses the operating system network protocol stack, and wherein the data processor is further configured to, in response to a second request for a second user level endpoint to join the first multicast group; cause the network interface device to deliver future incoming data packets of the first multicast group to the operating system and not to the first user level endpoint; and cause the operating system to deliver future incoming data packets of the first multicast group, to both the first and second user level endpoints. - View Dependent Claims (22)
-
-
23. A method for establishing filtering for incoming data packets to be received by a network interface device from a network, the network interface device comprising a resource configuration unit and a filter comprising a table and communicating with a host subsystem via an internal communications bus of the host subsystem, the host subsystem having an operating system having a network protocol stack, comprising the steps of:
-
receiving by the network interface device a first instruction from the host subsystem to deliver future incoming data packets of a first multicast group to a first user level endpoint in the host subsystem, in a manner that at least part of a header of the future incoming data packets, including an identification of at least one of the first multicast group and the first user level endpoint, bypasses the operating system network protocol stack; programming by the resource configuration unit the table in the network interface device in response to the receiving the first instruction with a first correspondence of an identification of the first user level endpoint with an identification of the first multicast group; receiving by the network interface device, while the first correspondence remains valid in the table, a second instruction from the host subsystem to deliver future incoming data packets of the first multicast group to a second user level endpoint in the host subsystem; further programming by the resource configuration unit the table in the network interface device in response to the receiving the second instruction with a second correspondence of an identification of the second user level endpoint with an identification of the first multicast group, such that the table comprises a correspondence of an identification of both the first and the second user level endpoints, on the one hand, with an identification of the first multicast group, on the other hand; receiving by the network interface device, while the first and second correspondences remain valid in the table, a third instruction from the host subsystem to no longer deliver future incoming data packets of the first multicast group to an identified one of the first and second user level endpoints; and deleting from the table, the correspondence of the first multicast group with the identified one of the first and second user level endpoints.
-
-
24. A method for filtering incoming data packets received by a network interface device from a network, the network interface device communicating with a host subsystem via a communications bus, the host subsystem having an operating system having a network protocol stack, comprising the steps of:
-
the network interface device receiving from the network an incoming data packet of a first multicast group; and the network interface device delivering the data packet via the communications bus to a first user level process, in a manner that at least part of a header of the incoming data packet, including an identification of at least one of the first multicast group and the first user level endpoint, bypass the operating system. - View Dependent Claims (25, 26)
-
-
27. A method for filtering incoming data packets received by a network interface device from a network, the network interface device communicating with a host subsystem via a communications bus, the host subsystem having an operating system having a network protocol stack, comprising the steps of:
-
the network interface device receiving a first data packet incoming from the network; and the network interface device delivering the first data packet via the communications bus to each of a plurality of target user level processes, in a manner that at least part of a header of the incoming data packet, including an identification of at least one of the first multicast group and a respective one of the target user level processes, bypass the operating system.
-
-
28. Network interface apparatus, for use with a network and with a host subsystem in communication with the network interface apparatus via an internal communications bus of the host subsystem, the host subsystem being capable of running an operating system having a network protocol stack and at least one user level process collectively having a plurality of user level endpoints for receipt of data packets incoming from the network interface apparatus, the network interface apparatus comprising:
-
a filter for filtering incoming data packets received from the network; and a table that identifies at least two user level endpoints for receipt of incoming data packets matching a single set of multicast grow filter criteria. - View Dependent Claims (29, 30, 31, 32)
-
-
33. Network interface apparatus, for use with a host subsystem in communication with the network interface apparatus via an internal communications bus of the host subsystem, the host subsystem having an operating system having a network protocol stack, the network interface device comprising:
-
a filter for filtering incoming data packets received from the network, the filter comprising a table; and a resource configuration unit that, in response to receipt from the host subsystem via the communications bus of first and second instructions to deliver future incoming data packets of a first multicast group to respective first and second user level endpoints in the host subsystem, in a manner that at least part of a header of the future incoming data packets, including an identification of at least one of the first multicast group and the first user level endpoint and the second user level endpoint, bypasses the operating system network protocol stack, configures the filter table in the network interface device with a correspondence of an identification of both the first and second user level endpoints, on the one hand, with an identification of the first multicast group, on the other hand, wherein the filter is operative in response to receipt from the network of a first incoming data packet of the first multicast group, for delivering the first incoming data packet to both the first and second user level endpoints in a manner at least part of a header of the incoming data packet, including an identification of at least one of the first multicast group and the respective first user level endpoint and the second user level endpoint, both bypassing the operating system network protocol stack.
-
-
34. Network interface apparatus, for use with a host subsystem in communication with the network interface apparatus via an internal communications bus of the host subsystem, the host subsystem having an operating system having a network protocol stack, the network interface device comprising:
-
a filter for filtering incoming data packets received from the network, the filter comprising a table, the table including a primary table and a secondary table; and a resource configuration unit that, in response to receipt from the host subsystem via the communications bus of a first instruction to deliver future incoming data packets of a first multicast group to a first user level endpoint in the host subsystem, configures the primary table in the network interface device with a correspondence of an identification of the first user level endpoint, on the one hand, with an identification of the first multicast group, on the other hand, wherein in response to receipt from the host subsystem, while the first correspondence remains valid in the primary table, a second instruction from the host subsystem to deliver future incoming data packets of the first multicast group to a second user level endpoint in the host subsystem, the resource configuration unit configures the secondary table with both the first correspondence and a second correspondence of an identification of the second user level endpoint with an identification of the first multicast group and disables the first correspondence from the primary table.
-
-
35. A method for filtering incoming data packets received by a network interface device from a network, the network interface device communicating with a host subsystem via a communications bus, the host subsystem having an operating system having a network protocol stack, comprising the steps of:
-
configuring a filter table in the network interface device with a correspondence between each of a plurality of user level processes, on the one hand, and an identification of a first multicast group, on the other hand; in response to the network interface device receiving from the network an incoming data packet of the first multicast group, determining whether the following conditions are fulfilled; the incoming data packet is not malformed, the incoming data packet uses a protocol that is supported in the filter table, and at least one correspondence is found between the incoming data packet and at least one user level endpoint; and in response to the step of determining, if all of the conditions are fulfilled, the network interface device delivering the incoming data packet to each of the plurality of user level processes, bypassing the operating system; and and in response to the step of determining, if not all of the conditions are fulfilled, the network interface device delivering the incoming data packet to the operating system.
-
Specification