The present invention relates to computer networks, and in particular, but not exclusively to, flow inspection.
Traffic inspection and filtering are fundamentals of any network topology and form the basis for network and cyber security-based solutions. Traffic filtering is used to provide network security by filtering network traffic based on different matching rules. Traffic filters are used to protect different services on a variety of network topologies and are used by many security companies.
There is provided in accordance with an embodiment of the present disclosure, a data communication device, including a network interface controller to process packets received from at least one of a host device for sending over a network, and at least one remote device over the network, at least one processor to execute computer instructions to receive a configuration, and extract filtering rules from the configuration, and at least one hardware accelerator to receive the filtering rules from the at least one processor, and filter the packets based on the rules so that some of the packets are dropped and some of the packets are forwarded to the at least one processor to send data based on the forwarded packets to another device.
Further in accordance with an embodiment of the present disclosure, the device includes a data processing unit (DPU) including the network interface controller, the at least one processor, and the at least one hardware accelerator.
Still further in accordance with an embodiment of the present disclosure the computer instructions include instructions to extract a format from the configuration, format the data based on the extracted format, and send the formatted data to the other device.
Additionally in accordance with an embodiment of the present disclosure the computer instructions include instructions to parse headers of the forwarded packets, and format the data based on the extracted format and the parsed headers.
Moreover, in accordance with an embodiment of the present disclosure the other device is any one or more of the following a telemetry device, a device including a graphics processing unit (GPU), and a programmable device.
Further in accordance with an embodiment of the present disclosure the network interface controller includes packet processing circuitry to receive steering rules from the other device, and process other packets responsively to the steering rules.
Still further in accordance with an embodiment of the present disclosure the packet processing circuitry is configured to drop at least some of the other packets responsively to the steering rules.
Additionally in accordance with an embodiment of the present disclosure the computer instructions include instructions to send the data to the other device over the network.
Moreover, in accordance with an embodiment of the present disclosure the network interface controller includes packet processing circuitry to mirror the packets to the software including the computer instructions.
Further in accordance with an embodiment of the present disclosure the at least one hardware accelerator is configured to filter the packets responsively to any one or more of the following a 5-tuple identification, a tenant identification, a port identification, a user identification, and at least one field from a network header.
There is also provided in accordance with another embodiment of the present disclosure, a flow inspection method, including processing packets received from at least one of a host device for sending over a network, and at least one remote device over the network, receiving a configuration, extracting filtering rules from the configuration, receiving the filtering rules by at least one accelerator, and filtering the packets by the at least one accelerator based on the rules so that some of the packets are dropped and some of the packets are forwarded to at least one processor to send data based on the forwarded packets to another device.
Still further in accordance with an embodiment of the present disclosure, the method includes extracting a format from the configuration, formatting the data based on the extracted format, and sending the formatted data to the other device.
Additionally in accordance with an embodiment of the present disclosure, the method includes parsing headers of the forwarded packets, wherein the formatting includes formatting the data based on the extracted format and the parsed headers.
Moreover, in accordance with an embodiment of the present disclosure the other device is any one or more of the following a telemetry device, a device including a graphics processing unit (GPU), and a programmable device.
Further in accordance with an embodiment of the present disclosure, the method includes receiving steering rules from the other device, and processing other packets responsively to the steering rules.
Still further in accordance with an embodiment of the present disclosure, the method includes dropping at least some of the other packets responsively to the steering rules.
Additionally in accordance with an embodiment of the present disclosure, the method includes sending the data to the other device over the network.
Moreover, in accordance with an embodiment of the present disclosure, the method includes mirroring the packets to software.
Further in accordance with an embodiment of the present disclosure the filtering includes filter packets responsively to any one or more of the following a 5-tuple identification, a tenant identification, a port identification, a user identification, and at least one field from a network header.
The present invention will be understood from the following detailed description, taken in conjunction with the drawings in which:
As previously mentioned, traffic inspection and filtering are fundamentals of any network topology and form the basis for network and cyber security-based solutions. Traffic filtering is used to provide network security by filtering network traffic based on different matching rules. Traffic filters are used to protect different services on a variety of network topologies and are used by many security companies.
Traffic inspection and filtering may be implemented using a software-based solution. However, a software-based solution leads to low performance compared to hardware-based solutions. Although performing traffic inspection and filtering using dedicated hardware generally has higher performance than software, using dedicated hardware is inflexible and it is very hard, if not impossible, to add new features, such as new filtering schemes or data output formats used by security services.
Embodiments of the present invention solve at least some of the above problems by providing a data communication device with a traffic inspection and filtering sub-system, which includes a hybrid hardware and software solution providing both high performance and flexible traffic inspection and filtering. The software (which may include firmware) receives a configuration (e.g., in a configuration file) and extracts filtering rules from the configuration. The filtering rules are then provided to one or more hardware accelerators, which receive the filtering rules and filter packets according to the filtering rules so that some of the packets are dropped and some of the packets are forwarded to the software, which formats data based on the forwarded packets and sends the data to another device for processing such as a telemetry device, a programmable device, or a device including a graphics processing unit (GPU), etc. The software provides flexibility regarding the filtering rules, while the hardware accelerator(s) provide high performance filtering according to the filtering rules provided by the configuration.
In some embodiments, the software extracts a format from the configuration with which to format the data for sending to the other device. In some embodiments, the software parses headers of the forwarded packets and formats the data based on the extracted format and the parsed headers. Including the format in the configuration allows the data formatting to remain flexible and be tailored according to the needs of the security service (or other service) receiving the formatted data.
In some embodiments, the data communication device includes a data processing unit (DPU) which includes a network interface controller to process receipt and sending of packets over a network, one or more processors (e.g., processor cores), and one or more hardware accelerators. Using the processor(s) and accelerator(s) to perform the filtering and data formatting allows the DPU to filter network flows without interrupting data streams being processed to and/or from a host device connected to the data communication device.
Reference is now made to
The network interface controller 14 is configured to process packets received from: a host device 28 for sending over a network 30 to one or more remote device(s) 32; and/or the remote device(s) 32 over the network 30. The packets received from the host device 28 may be received via an interface 36 of the host device 28 and the interface 20 of the data communication device 12. The interface 36 and the interface 20 may be any suitable interface, for example, a peripheral bus interface, such as an interface operating according to peripheral component interconnect express (PCIe) standard.
The network interface 24 is configured to receive packets from the network 30 and send packets over the network 30. The processor(s) 18 may include one or more processing cores configured to execute computer instructions 38 (e.g., software or firmware). The processor(s) 18 is described in more detail with reference to
The system 10 may include another device 34 from which a configuration (e.g., in a configuration file) is received, as described in more detail with reference to
Reference is now made to
The computer instructions 38 are configured to receive a configuration (e.g., in a configuration file) from a device such as the device 34 (e.g., a security service) (block 202). The computer instructions 38 are configured to extract filtering rules from the configuration (block 204). The filtering rules may include any suitable filtering rules to identify packets of interest. The filtering rules may include rules related to any one or more of the following: a 5-tuple identification; a tenant identification; a port identification; a user identification; and at least one field from a network header. The extracted filtering rules are provided to the hardware accelerator(s) 16 to filter packets (e.g., packets mirrored to the hardware accelerator(s) 16) according to the filtering rules so that some of the packets are dropped and some of the packets are forwarded back to the computer instructions 38, as described in more detail with reference to
The computer instructions 38 are configured receive filtered packets forwarded from the hardware accelerator(s) 16 (block 206). In some embodiments, the computer instructions 38 are configured to extract a format from the configuration (block 208). The format specifies how data from the packets should be formatted for sending to the device 34. In some embodiments, the computer instructions 38 are configured to parse headers of the forwarded packets (block 210) for use in the data formatting described in more detail below.
In some embodiments, the computer instructions 38 are configured to format data from the forwarded packets (block 212). In some embodiments, the computer instructions 38 are configured to format data from the forwarded packets based on the extracted format. In some embodiments, the computer instructions 38 are configured to format data from the forwarded packets based on the extracted format and the parsed headers. For example, the extracted format may specify where data from given headers (provided by the header parsing step of block 210) should be included in the formatted data.
The computer instructions 38 are configured to send the (formatted) data to the device 34 (block 214). In some embodiments, the computer instructions 38 are configured to send the (formatted) data to the device 34 over the network 30. In some embodiments, the device 34 may be directly connected to the data communication device 12.
In practice, some or all of the functions of the processor(s) 18 may be combined in a single physical component or, alternatively, implemented using multiple physical components. These physical components may comprise hard-wired or programmable devices, or a combination of the two. In some embodiments, at least some of the functions of the processor(s) 18 may be carried out by a programmable processor under the control of suitable software. This software may be downloaded to a device in electronic form, over a network, for example. Alternatively, or additionally, the software may be stored in tangible, non-transitory computer-readable storage media, such as optical, magnetic, or electronic memory.
Reference is now made to
Reference is now made to
The device 34 receives the formatted data from the data communication device 12 and may analyze the formatted data and determine a decision based on the received data that certain packets (e.g., from given sources or given packet types etc.) should be dropped or otherwise processed. For example, the device 34 may identify some of the packets as a security threat and determine a decision to drop the identified packets. The device 34 may generate steering rules to be applied by the data communication device 12 to implement the decision.
The packet processing circuitry 22 is configured to: receive steering rules from the device 34 (block 402); and process other packets responsively to the received steering rules (block 404). In some embodiments, the packet processing circuitry 22 is configured to drop at least some of the other packets responsively to the steering rules.
Various features of the invention which are, for clarity, described in the contexts of separate embodiments may also be provided in combination in a single embodiment. Conversely, various features of the invention which are, for brevity, described in the context of a single embodiment may also be provided separately or in any suitable sub-combination.
The embodiments described above are cited by way of example, and the present invention is not limited by what has been particularly shown and described hereinabove. Rather the scope of the invention includes both combinations and sub-combinations of the various features described hereinabove, as well as variations and modifications thereof which would occur to persons skilled in the art upon reading the foregoing description and which are not disclosed in the prior art.
Number | Name | Date | Kind |
---|---|---|---|
5347637 | Halford | Sep 1994 | A |
6041058 | Flanders et al. | Mar 2000 | A |
6704831 | Avery | Mar 2004 | B1 |
7286549 | Gaur | Oct 2007 | B2 |
7346707 | Erimli | Mar 2008 | B1 |
7535907 | Hussain et al. | May 2009 | B2 |
7813277 | Okholm et al. | Oct 2010 | B2 |
7895431 | Bouchard et al. | Feb 2011 | B2 |
8095683 | Balasubramaniam Chandra | Jan 2012 | B2 |
8111707 | Riddle et al. | Feb 2012 | B2 |
8208380 | Nachum et al. | Jun 2012 | B1 |
8279885 | Riddle | Oct 2012 | B2 |
8913264 | Skvirski | Dec 2014 | B2 |
9141548 | Asher et al. | Sep 2015 | B2 |
9397938 | Folsom et al. | Jul 2016 | B2 |
9680742 | Tompkins et al. | Jun 2017 | B2 |
9811467 | Snyder, II et al. | Nov 2017 | B2 |
10033607 | Badea et al. | Jul 2018 | B2 |
10210125 | Burstein | Feb 2019 | B2 |
10230810 | Bhide et al. | Mar 2019 | B1 |
10277518 | Matthews et al. | Apr 2019 | B1 |
10834006 | Levy et al. | Nov 2020 | B2 |
10999366 | Gafni et al. | May 2021 | B2 |
11327890 | Mukherjee | May 2022 | B1 |
11374872 | Danivas et al. | Jun 2022 | B1 |
11451493 | Yefet et al. | Sep 2022 | B2 |
11513958 | Mukherjee | Nov 2022 | B1 |
20010055274 | Hegge et al. | Dec 2001 | A1 |
20040003094 | See | Jan 2004 | A1 |
20060056406 | Bouchard et al. | Mar 2006 | A1 |
20060265561 | Boyd et al. | Nov 2006 | A1 |
20070223385 | Berly et al. | Sep 2007 | A1 |
20080279102 | Sankaran et al. | Nov 2008 | A1 |
20090161547 | Riddle et al. | Jun 2009 | A1 |
20130258858 | Cherian et al. | Oct 2013 | A1 |
20140078915 | Edsall et al. | Mar 2014 | A1 |
20140089450 | Raindel et al. | Mar 2014 | A1 |
20140223111 | Dinkjian et al. | Aug 2014 | A1 |
20140280674 | Arramreddy et al. | Sep 2014 | A1 |
20140286352 | Turgeman | Sep 2014 | A1 |
20140344536 | Benisty et al. | Nov 2014 | A1 |
20150071079 | Kadosh | Mar 2015 | A1 |
20150134875 | Veal | May 2015 | A1 |
20150220360 | Snyder, II et al. | Aug 2015 | A1 |
20150249604 | Foslom et al. | Sep 2015 | A1 |
20150254104 | Kessler et al. | Sep 2015 | A1 |
20150355883 | Kegel | Dec 2015 | A1 |
20160087916 | Janardhanan | Mar 2016 | A1 |
20170104642 | Miura et al. | Apr 2017 | A1 |
20170279817 | Campbell et al. | Sep 2017 | A1 |
20170337010 | Kriss et al. | Nov 2017 | A1 |
20170339074 | Melman et al. | Nov 2017 | A1 |
20180123933 | Yamashima et al. | May 2018 | A1 |
20180183733 | Dcruz et al. | Jun 2018 | A1 |
20190327190 | Browne | Oct 2019 | A1 |
20190334799 | Iizuka | Oct 2019 | A1 |
20200106740 | Bangalore Krishnamurthy | Apr 2020 | A1 |
20200371708 | Karmani et al. | Nov 2020 | A1 |
Number | Date | Country |
---|---|---|
1529256 | Sep 2004 | CN |
Entry |
---|
Tsirkin et al., “Virtual I/O Device (VIRTIO)”, Version 1.1, OASIS Open Committee Specification 01, pp. 1-126, Apr. 11, 2019 as downloaded from https://docs.oasis-open.org/virtio/virtio/v1.1/virtio-v1.1.html. |
NVM Express Inc., “NVM Express® Base Specification”, Revision 2.0b, pp. 1-455, Jan. 6, 2022 as downloaded from https://nvmexpress.org/wp-content/uploads/NVM-Express-Base-Specification-2.0b-2021.12.18-Ratified.pdf. |
PCI-SIG, “Pci Express® Base Specification”, Revision 6.0, pp. 1-1923, Dec. 16, 2021. |
U.S. Appl. No. 17/015,123 Office Action dated Mar. 16, 2022. |
CN Application # 202010419130.4 Office Action dated Feb. 29, 2024. |
Wikipedia, “Direct Memory Access,” pp. 1-7, last edited Nov. 4, 2018. |
U.S. Appl. No. 17/015,123 Office Action dated Sep. 14, 2022. |
Number | Date | Country | |
---|---|---|---|
20230328032 A1 | Oct 2023 | US |