Nova Patents
US8543729B2

Virtualised receive side scaling

Summary by NHIP

Virtualized Receive Scaling

The method receives packet data and selects a delivery channel based on packet characteristics to assign processing to a specific core. This mapping ensures the same core handles receive processing for all preceding packets of that data flow within an untrusted software domain.

Claim Score by NHIP

Read claim 35, the broadest

Abstract

A method for receiving packet data by means of a data processing system having a plurality of processing cores and supporting a network interface device and a set of at least two software domains, each software domain carrying a plurality of data flows and each supporting at least two delivery channels, the method comprising: receiving at the network interface device packet data that is part of a particular data flow; selecting in dependence on one or more characteristics of the packet data a delivery channel of a particular one of the software domains, said delivery channel being associated with a particular one of the processing cores of the system; and mapping the incoming packet data into said selected delivery channel such that receive processing of the packet is performed by the same processing core that performed receive processing for preceding packets of that data flow.

US8543729B2, drawing sheet 1
Sheet 1 of 6

Term

4.1 yearsleft in the term

Expires 25 October 2030, including 706 days of term adjustment.

  1. Priority
  2. Filed
  3. Granted
  4. Today
  5. Expires

41 claims: 6 independent, 35 dependent

  1. 1
    A method for receiving packet data by means of a data processing system having a plurality of processing cores and supporting a network interface device and a set of at least two untrusted software domains, each untrusted software domain:(a) carrying a plurality of data flows;(b) supporting at least two delivery channels between the network interface device and the respective untrusted software domain;and (c) being operable to perform receive processing of received packet data at a processing core of the data processing system, the method comprising: receiving at the network interface device packet data that is part of a particular data flow;selecting in dependence on one or more characteristics of the packet data a delivery channel of a particular one of the untrusted software domains, said delivery channel being associated with a particular one of the processing cores of the data processing system;and mapping the incoming packet data into the selected delivery channel such that receive processing of the packet data is performed in the untrusted software domain by the same processing core that performed receive processing for preceding packets of that data flow.
  2. 24
    A data processing system arranged for receiving packet data, comprising a plurality of processing cores and supporting a network interface device and a set of at least two untrusted software domains, each untrusted software domain:(a) carrying a plurality of data flows;(b) supporting at least two delivery channels between the network interface device and the respective untrusted software domain;and (c) being operable to perform receive processing of received packet data at a processing core of the data processing system, the data processing system being configured to: receive at the network interface device packet data that is part of a particular data flow;select in dependence on one or more characteristics of the packet data a delivery channel of a particular one of the untrusted software domains, said delivery channel being associated with a particular one of the processing cores of the data processing system;and map the incoming packet data into the selected delivery channel such that receive processing of the packet data is performed in the untrusted software domain by the same processing core that performed receive processing for preceding packets of that data flow.
  3. 25
    A method for transmitting data packets onto a network by means of a data processing system having a plurality of processing cores and supporting a network interface device and a set of at least two untrusted software domains, each untrusted software domain:(a) carrying a plurality of data flows;(b) supporting at least two transmit channels between the network interface device and the respective untrusted software domain, and (c) being operable to process notification events associated with the transmission of data at a processing core of the data processing system, the method comprising: at a particular one of the untrusted software domains, selecting in dependence on the data flow to which a set of data for transmission belongs, one of at least two transmit channels, said transmit channel being associated with a particular one of the processing cores of the data processing system;and processing notification events associated with the transmission of data through the transmit channel on the processing core associated with said transmit channel.
  4. 35
    Broadest claimClaim Score 47, average(NHIP)A data processing system arranged for transmitting data packets onto a network, comprising a plurality of processing cores and supporting a network interface device and a set of at least two untrusted software domains, each untrusted software domain:(a) carrying a plurality of data flows;(b) supporting at least two transmit channels between the network interface device and the respective untrusted software domain;and (c) being operable to process notification events associated with the transmission of data at a processing core of the data processing system, the data processing system being configured to: at a particular one of the untrusted software domains, select in dependence on the data flow to which a set of data for transmission belongs, one of at least two transmit channels, said transmit channel being associated with a particular one of the processing cores of the data processing system;and process notification events associated with the transmission of data through the transmit channel on the processing core associated with said transmit channel.
  5. 36
    A data processing system arranged to receive and transmit packet data by means of a data processing system having a plurality of processing cores and supporting a network interface device and a set of at least two untrusted software domains, each untrusted software domain:(a) carrying a plurality of data flows;(b) supporting at least two delivery channels between the network interface device and the respective untrusted software domain;(c) being operable to perform receive processing of received packet data at a processing core of the data processing system;and (d) being operable to process notification events associated with the transmission of data at a processing core of the data processing system, the data processing system arranged to perform data receiving steps of: receiving at the network interface device packet data that is part of a first data flow;selecting in dependence on one or more characteristics of the packet data a delivery channel of a particular one of the untrusted software domains, said delivery channel being associated with a first one of the processing cores of the data processing system;and mapping the incoming packet data into the selected delivery channel such that receive processing of the packet data is performed in the untrusted software domain by the same processing core that performed receive processing for preceding packets of that first data flow, the data processing system further arranged to perform data transmitting steps of: at a particular one of the untrusted software domains, selecting in dependence on a second data flow to which a set of data for transmission belongs, one of at least two transmit channels, said selected transmit channel being associated with a second one of the processing cores of the data processing system;and processing notification events associated with the transmission of data through the selected transmit channel on the second processing core, the data processing system further arranged to determine whether the first and second data flows are the same data flow, and if so, then to select the same processing core for both the data receiving steps of the first flow and the data transmitting steps of the second flow.
  6. 37
    A method for managing interaction between a data processing system and a network interface device, the data processing system having a plurality of processing cores and supporting a set of at least two untrusted software domains, each untrusted software domain:(a) carrying a plurality of data flows;(b) supporting a set of at least two notification channels;and (c) being operable to process notification events at a processing core of the data processing system, the method comprising: at the network interface device, in response to processing data of a data flow of one of the untrusted software domains, selecting in dependence on one or more characteristics of the data flow one of the set of notification channels of the software domain, each notification channel being associated with a particular one of the processing cores of the data processing system;delivering a notification event to the selected notification channel;and responsive to delivering the notification event to the selected notification channel, causing an interrupt to be delivered to the processing core associated with the selected notification channel such that processing of the notification event is performed at that processing core by a processing entity of the software domain.