![]() ![]() This signature protects the system from malicious remote hosts that might attempt to force the system into an unbalanced state. RSS includes a signature that provides added security. A driver can also specify the CPU (for example, if a timer is used). By default, the send processing runs on the same CPU if it is triggered by the receive acknowledgment. The RSS indirection table identifies a particular CPU for the receive data processing. The acknowledgment then triggers subsequent send requests. Typically, an overlying driver (for example, TCP) sends part of a data block and waits for an acknowledgment before sending the balance of the data. RSS enables driver stacks to process send and receive-side data for a given connection on the same CPU. For more information about specifying indirection tables, hash types, and hashing functions, see RSS Configuration. To rebalance the load, overlying drivers can change the indirection table. RSS provides a means to rebalance the network processing load between CPUs as host system load varies. For more information about RSS receive processing, see Indicating RSS Receive Data. For each network connection, RSS processes receive indications on an associated CPU. RSS preserves the order of delivery of received data packets. RSS distributes the processing of receive indications from a given NIC in DPCs to multiple CPUs. To achieve these performance improvements in a secure environment, RSS provides the following mechanisms: Such reloading occurs, for example, when a function that is executing and accessing shared data on CPU0, executes on CPU1 in a subsequent interrupt. Reloading of caches and other resources by increasing the probability that software algorithms that share data execute on the same CPU. CPU1 spins (waits) until CPU0 releases the lock. Spin lock overhead occurs, for example, when a function executing on CPU0 possesses a spin lock on data that a function running on CPU1 must access. Spin lock overhead by increasing the probability that software algorithms that share data execute on the same CPU. This helps to ensure that no CPU is heavily loaded while another CPU is idle. Processing delays by distributing receive processing from a NIC across multiple CPUs. RSS can improve network system performance by reducing: The NIC always passes on the 32-bit hash value. For more information, see RSS with Message Signaled Interrupts. The NIC interrupts the CPU that should handle the received packets. For more information, see RSS with Hardware Queuing. The NIC assigns the received data buffers to queues that are associated with CPUs. Hash calculation with multiple receive queues For more information, see RSS with a Single Hardware Receive Queue. The NIC calculates the hash value and the miniport driver assigns received packets to queues that are associated with CPUs. There are three possible levels of hardware support for RSS: The following figure illustrates the levels of hardware support for RSS. For more information about NDIS support for MSIs, see NDIS MSI-X. With message signaled interrupt (MSI) support, a NIC can also interrupt the associated CPU. The values in the indirection table are used to assign the received data to a CPU.įor more detailed information about specifying indirection tables, hash types, and hashing functions, see RSS Configuration. The defined area can be noncontiguous.Ī number of least significant bits (LSBs) of the hash value are used to index an indirection table. The following figure illustrates the RSS mechanism for determining a CPU.Ī NIC uses a hashing function to compute a hash value over a defined area (hash type) within the received network data. The NIC implements a hash function and the resulting hash value provides the means to select a CPU. Also, the RSS design ensures that the processing that is associated with a given connection stays on an assigned CPU. With RSS, the NIC and miniport driver provide the ability to schedule receive DPCs on other processors. For an overview of non-RSS receive processing, see Non-RSS Receive Processing. Therefore, all of the receive processing that is associated with the interrupt runs on the CPU where the receive interrupt occurs. Without RSS, a typical DPC indicates all received data within the DPC call. To process received data efficiently, a miniport driver's receive interrupt service function schedules a deferred procedure call (DPC). For this reason, RSS does not use hyper-threaded processors. Because hyper-threaded CPUs on the same core processor share the same execution engine, the effect is not the same as having multiple core processors. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |