Virtualizing hardware resilience for network connections

Through data plane control of software stack and fiber optic port selectors, rapid fault recovery of large data center network connections is achieved, solving the problem of high computing costs caused by network link failures and improving the fault tolerance and stability of the network.

CN120979967APending Publication Date: 2025-11-18MELLANOX TECHNOLOGIES LTD(IL)
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202510624767.X
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-05-20
Filing Date
2025-05-15
Publication Date
2025-11-18

AI Technical Summary

Technical Problem

Large data centers suffer from low fault tolerance due to network link failures, especially given the high computational costs of artificial intelligence workloads. Existing technologies struggle to quickly restore network connectivity when failures occur.

Method used

By leveraging the resilient switching of Network Interface Controller (NIC) ports and fiber optic port selectors through a software stack solution, data plane control is achieved, enabling rapid switching to backup ports, updating network forwarding rules, and ensuring transparent migration and recovery of network connectivity.

Benefits of technology

In the event of a failure, quickly switch to a backup port to reduce link reset time, avoid computationally expensive restarts and reconfigurations, and ensure high availability and stability of network connectivity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120979967A_ABST
    Figure CN120979967A_ABST
Patent Text Reader

Abstract

The invention relates to virtualizing hardware resilience for network connections. The network elastic controller can monitor the port state of the network interface controller. Software defined data paths may be used to virtualize different ports of a network interface controller and direct traffic to a given port. If it is determined that a port fault is about to occur or has occurred, the one or more selectors may modify a port associated with the network interface controller. The network resilient controller may identify a port handover, determine that a new connection has been established with the new port, and then modify one or more traffic rules for routing traffic along the new port.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross Reference to Related Applications

[0002] This application claims priority to Greek Application No. 20240100365, filed May 16, 2024, entitled “VIRTUALIZING HARDWARE RESILIENCE FOR NETWORK CONNECTIONS,” the entirety of which is incorporated herein by reference for all purposes. BACKGROUND

[0003] Large data centers can connect various physical components using different wired and / or wireless communication protocols. For certain structures, fault tolerance capabilities can be low and / or even nearly zero, as a failure between different network links can cause a crash, resulting in downtime and loss of productivity. In certain cases, the failure can occur at a physical port, such as a port of a network switch, etc. When a failure is detected, a virtualization service can migrate to a different underlying hardware and then reconfigure the network to direct traffic to the new location. However, for certain workloads, such as artificial intelligence (AI) workloads, fault tolerance capabilities can be low, resulting in costly restarts and reconfigurations. BRIEF DESCRIPTION OF DRAWINGS

[0004] Various embodiments according to the present disclosure will be described with reference to the drawings, wherein:

[0005] Figure 1 A schematic diagram of a network model is shown, in accordance with at least one embodiment;

[0006] Figure 2 An example system for monitoring port status of network communication components is shown, in accordance with at least one embodiment;

[0007] Figure 3A An example system for identifying and updating one or more network traffic rules is shown, in accordance with at least one embodiment;

[0008] Figure 3B An example system for identifying and updating one or more network traffic rules is shown, in accordance with at least one embodiment;

[0009] Figure 3C An example system for identifying and updating one or more network traffic rules is shown, in accordance with at least one embodiment;

[0010] Figure 3D A call graph for monitoring network connections and updating rules based on connection status is shown, in accordance with at least one embodiment;

[0011] Figure 4A An example process for transmitting network traffic using one or more updated rules is shown in accordance with at least one embodiment;

[0012] Figure 4B An example process for updating one or more network transmission rules is shown in accordance with at least one embodiment;

[0013] Figure 4C An example process for generating updated network transmission rules is shown in accordance with at least one embodiment;

[0014] Figure 5A An example process for transmitting network traffic using one or more updated rules is shown in accordance with at least one embodiment;

[0015] Figure 5B An example process for transmitting network traffic using one or more updated rules is shown in accordance with at least one embodiment;

[0016] Figure 5C An example process for updating one or more network transmission rules is shown in accordance with at least one embodiment;

[0017] Figure 6 Components of a distributed system that can be used to update or perform inferences using a machine learning model in accordance with at least one embodiment are shown;

[0018] Figure 7 An example data center system in accordance with at least one embodiment is shown;

[0019] Figure 8 A computer system in accordance with at least one embodiment is shown;

[0020] Figure 9 A computer system in accordance with at least one embodiment is shown;

[0021] Figure 10 At least a portion of a graphics processor in accordance with one or more embodiments is shown; and

[0022] Figure 11 At least a portion of a graphics processor in accordance with one or more embodiments is shown. DETAILED DESCRIPTION

[0023] In the following description, various embodiments will be described. For the purpose of explanation, specific configurations and details are set forth in order to provide a thorough understanding of the embodiments. However, it will also be apparent to one skilled in the art that the embodiments can be practiced without specific details being presented herein. In other instances, well-known features are omitted or simplified in order not to obscure the embodiments being described.

[0024] The systems and methods described herein can be used without limitation by non-autonomous vehicles, semi-autonomous vehicles (e.g., in one or more advanced driver assistance systems (ADAS)), autonomous vehicles or machines, manned and unmanned robots or robotic platforms, warehouse vehicles, off-road vehicles, vehicles coupled to one or more trailers, dirigibles, watercraft, space shuttles, emergency response vehicles, motorcycles, electric or motorized bicycles, aircraft, construction vehicles, trains, underwater vehicles, remote-controlled vehicles (e.g., drones), and / or other vehicle types. Further, the systems and methods described herein can be used for a variety of purposes, such as but not limited to machine control, machine motion, machine driving, synthetic data generation, model training or updating, perception, augmented reality, virtual reality, mixed reality, robotics, safety and supervision, simulation and digital twinning, autonomous or semi-autonomous machine applications, deep learning, environmental simulation, object or participant simulation and / or digital twinning, data center processing, conversational artificial intelligence (AI), generative AI with large language models (LLMs), light transport simulation (e.g., ray tracing, path tracing, etc.), collaborative content creation of 3D assets, cloud computing, and / or any other suitable application.

[0025] The disclosed embodiments can be included in a variety of different systems, such as automotive systems (e.g., control systems for autonomous or semi-autonomous machines, perception systems for autonomous or semi-autonomous machines), systems implemented using robots, aviation systems, medical systems, boating systems, smart area monitoring systems, systems for performing deep learning operations, systems for performing simulation operations, systems for performing digital twinning operations, systems implemented using edge devices, systems including one or more virtual machines (VMs), systems for performing synthetic data generation operations, systems implemented at least partially in data centers, systems for performing conversational AI operations, systems for performing generative AI operations using LLMs, systems for performing light transport simulation, systems for performing collaborative content creation of 3D assets, systems implemented at least partially using cloud computing resources, and / or other types of systems.

[0026] Methods according to various embodiments are directed to network connection resiliency. In at least one embodiment, systems and methods can be associated with network interface controller (NIC) port resiliency. In particular, systems and methods are directed to a software stack solution for data plane control in response to determining that one or more ports of a NIC or some other network connection component have switched to other ports. The NIC can be associated with a switching device (e.g., an optical switching device) that constitutes the physical connection of the NIC. If a port fails, the switching device can change the egress port associated with the NIC to reestablish the connection and verify that the new connection has been successfully established. When the new port is determined to have the established connection, one or more network forwarding rules associated with ingress and / or egress data traffic of the NIC can be evaluated to determine which rules identified the previous port, and then the rules are updated to identify the new port. For example, a set of cloned rules can be activated while previously rules associated with the old port are deactivated. As another example, one or more rules can be updated to replace the old port with the new port. In yet another example, one or more rules can be assigned different priorities, such as a lower priority for the old port and a higher priority for the new port. Thus, the switch can be performed in a shorter time below a link full reset trigger threshold, thereby speeding up the link startup time between the new port pairs. Systems and methods can be deployed using a monitor running on one or more network resources, or can be executed based on firmware instructions using the underlying hardware of the NIC.

[0027] Various systems and methods can implement hardware resiliency to mitigate NIC transceiver failures. At least one embodiment can be used with a NIC having N ports (e.g., a NIC having at least two ports) that has the ability to programmatically attach one of its ports to a network at the physical layer while using the other port as a backup port that can be connected immediately (e.g., without a noticeable delay, a delay less than a link interruption threshold, a delay less than a link full reset trigger, etc.) if the first port fails. Certain embodiments can include a fiber port selector for selectively interfacing one or the other transceiver of the NIC to an optical network. Thus, when a transceiver fails, the software stack design supports transparent migration of the network connection from one port to the other, taking into account the timeout tolerance of the transport layer, which enables running jobs to continue running even in the presence of a slight glitch. Thus, these systems and methods can overcome the problem of workloads stopping often at a high computational cost in existing failure mitigation techniques.

[0028] Figure 1A diagram of system 100 is shown, which represents a simplified network model corresponding to the Open Systems Interconnection (OSI) model and the Transmission Control Protocol / Internet Protocol (TCP / IP) model. It should be understood that embodiments of the present disclosure can also be used with reference to either model, and specific discussion of a particular layer can be provided by way of non-limiting example, and can include equivalent relationships between the two models. Moreover, various features have been removed for clarity and conciseness. Furthermore, the systems and methods can be used with a variety of different architectures. Turning to the OSI model configuration, the physical layer 102 can refer to the underlying hardware resources and signal transmission using one or more transmission media, such as electrical cables. In operation, the physical layer 102 converts binary from the upper layers discussed herein into signals, which are then transmitted over the local medium. These signals can be electrical signals, optical signals (e.g., light signals), radio signals, etc. By way of example, the physical layer 102 can include systems associated with a data center, including features such as, but not limited to, data center rooms, racks, servers, processors (e.g., compute units), switches, cables, etc. That is, the physical layer 102 can refer to the physical connection between the network and the servers / other devices. For example, the physical layer 102 can include cables 110 for connecting various hardware resources 118, such as servers and / or storage media, to one or more network connections. Moreover, in at least one embodiment, the physical layer 102 can refer to different servers located within a rack that are connected to one or more other servers using different wired or wireless communication protocols. The physical layer 102 can also include hardware resources such as switches or interface controllers as described herein.

[0029] The data link layer 104 is used to receive information (e.g., data packets) from the network layer 106. The data link layer 104 can be an embedded layer of one or more hardware units, such as a NIC. In operation, the data link layer 104 is used to directly connect different nodes, establish / terminate connections, and define communication protocols between modes. The data link layer 104 can include a media access control (MAC) layer 120 and a logical link control (LLC) layer 122. The network layer 106 is used to transfer data segments from a source to a destination.

[0030] The illustrated model also includes a transport layer 108, which can be used to segment data for transmission along the network layer 106. The transport layer can use one or more protocols, such as the User Datagram Protocol (UDP) or TCP, to transmit data. The session layer 110 can be used to create a connection, control the connection, and then end a session between two or more endpoints. In at least one embodiment, the presentation layer 112 can be used to receive data for transmission from the application layer 114, and in various embodiments, can perform encryption or decryption on the data. The presentation layer 112 can be used to convert data, such as for protocol conversion, data encryption, data decryption, data compression, data decompression, incompatibilities in data representation between operating systems, and graphics commands. The application layer 114 can represent one or more application programs 124 that are closest to the end user. In at least one embodiment, the application layer 114 is associated with different operations performed using underlying resources, such as software programs loaded onto different virtual machines (VMs). As illustrated in this example, the application layer 130 for the TCP / IP model can include the application layer 114, the presentation layer 112, and the session layer 110 of the OSI model. In addition, the TCP / IP model can also include a network access layer 132, which encompasses the data link layer 104 and the physical layer 102 of the OSI model.

[0031] The systems and methods of the present disclosure can be directed to different configurations, such as data centers, where groups of servers can be represented as different clusters, among other options. Physical components within a data center can be communicatively coupled together using one or more network components, which can be associated with different ports. In operation, a port receives data packets for use by a connected component, such as a server. “Dropping” a data packet or otherwise not receiving information along a port can cause a job being performed to fail or be delayed. As a result, workloads can be migrated to different underlying hardware components, even if the fault was caused by a transceiver. For certain workloads, a job failure can result in restarting one or more operations from a checkpoint, which can be computationally time consuming and costly. Embodiments of the present disclosure solve and overcome problems of existing systems by implementing hardware resistance using a software solution that supports a set of actions to activate different network flows in order to transparently switch between different ports associated with network components, such as NICs. The systems and methods can be used to identify components and related architectures using a data plane control solution.

[0032] Figure 2An example system 200 is shown that schematically represents an architecture for a network component (in this case, a NIC 202) and various connections to software and / or hardware resources. In operation, one or more functions of the NIC 202 can be controlled or otherwise operated using a software data stack that can contain one or more virtualization architectures in order to virtually couple ports of the NIC 202 to one or more software-defined data paths. In this example, the NIC 202 is a multi-port NIC (e.g., an N-port NIC 202) that contains at least two ports 204. The ports 204 in the illustrated example include port 0 204A, port 1 204B, and port N 204N. Other embodiments can contain more or fewer ports.

[0033] The illustrated NIC 202 can include on-board processing capabilities, such as a data processing unit (DPU) 206. The DPU 206 can execute one or more boot processes or commands from firmware 208 and / or different stored instructions in a data store 210, which can be on-board storage associated with the NIC 202. As will be discussed herein, the systems and methods of the present disclosure can include a software stack that transparently directs traffic along one or more ports 204 based at least in part on port state and other various characteristics. The software stack can run in a privileged environment associated with an orchestration infrastructure stack and / or can be a service associated with an isolated environment of the DPU 206 from the NIC 202. Thus, the embodiments discussed herein can be deployed and controlled by an infrastructure provider.

[0034] In this example, the virtual switch architecture stack 212 can include interfaces 214 and one or more virtual ports 216. The number of virtual ports 216 can correspond to the number of ports 204 associated with the NIC 202. In various embodiments, the number of virtual ports 216 can be dynamically adjustable based on the underlying NIC 202, thus, various different NICs 202 can be used and certain NICs 202 can have different numbers of ports 204 supported by different virtual switch architecture stacks 212. For example, if the NIC 202 includes only two ports 204, then the virtual switch architecture stack 212 can be configured with only two virtual ports 216. In this way, the virtual switch architecture stack 212 can be adjusted and / or tuned to work with various different NICs 202. In this example, different virtual switches 216A-216N are mapped or otherwise associated with respective ports 204A-204N of the NIC 202. That is, virtual port 0 216A is mapped to port 0 204A, virtual port 1 216B is mapped to port 1 204B, and virtual port N 216N is mapped to port N 204N. The virtual ports 216 can be used to abstract the ports 204 of the NIC 202.

[0035] The controller 218 can be used to monitor port status, send instructions to the switch ports, and / or execute one or more different data paths. In the present example, the controller 218 includes an orchestrator, a port monitor 222, and a software defined networking engine (SDN) 224. The orchestrator 220 can take on the role of orchestrating the process of switching the physical ports associated with the NIC 202. For example, the port monitor 222 can receive one or more signals indicative of the status of the ports associated with the selector 226, which in the present example can be an optical selector. In the present example, an optional input / output (I / O) interface 228 can provide data to the port monitor 222. The port monitor 222 can determine, through the selector 226, which port 204A-204N is currently transmitting data, and in certain embodiments, can monitor the health of the ports. For example, the port monitor 222 can provide an indication of the current port health, future port health, predicted port failure, and the like. It should be appreciated that in various embodiments, the port monitor 222 can be omitted, and onboard hardware associated with the NIC 202 can be used to monitor port health and / or selector status. For example, the firmware 208 can include monitoring capabilities to receive one or more signals from the ports 204 and / or the selector 226 to identify port status, selector position, and the like. Thus, while embodiments can discuss port monitoring with respect to the port monitor 222, alternatives can perform one or more of the same operations using the firmware 208. Further, certain functionality can use the port monitor 222, while other functionality can use the firmware 208. For example, if it is determined that a task can exceed the processing capabilities associated with the NIC 202, the port monitor 222 can perform one or more operations to offload the task from the firmware 208.

[0036] In operation, the orchestrator 220 can receive a notification from the port status monitor 222 indicating a port health, such as an impending port failure or a current port failure. An impending port failure can be predicted using one or more stored software evaluation methods, such as one or more trained machine learning models. For example, a port failure can be determined based on sensor readings and / or data transmission information, such as latency, upload speed, download speed, and the like. If a port is monitored over a period of time, and the latency increases by some threshold amount, one or more models can determine that a failure is impending. In at least one embodiment, in addition to determining a failure (e.g., a loss of connection that is unexpected or undesirable), the system and method can also monitor for scheduled maintenance or switching operations, which can also be used to signal to update the software defined data paths, as described herein.

[0037] Upon receiving a signal indicating a failure, an impending failure, a pending maintenance, etc., orchestrator 220 can then send a signal to SDN engine 224 to stop negotiating new rules for the relevant data path. Thus, packet loss can be stopped when a port switch occurs. Port monitor 222 and / or orchestrator 220 can trigger selector 226 to select a new port. In other embodiments, selector 226 can automatically select a new port based on information received by selector 226, such as an optical signal loss, an instruction from NIC 202, etc. Selection of a new port can be based on one or more rules, or can be random, among other options. Port monitor 222 can continuously monitor port health until a new connection is verified as complete and established. For example, it can not be desirable to perform a different system to modify network traffic until a new connection is identified, as the process would need to be repeated if the new connection also fails. When a new connection is established, orchestrator 220 can then signal the data path to activate one or more backup routing rules to activate the new port and deactivate the old port. Data path forwarding can now resume operation. Various embodiments can perform a port switch in less time than a transport layer timeout limit, thus, workloads associated with the port can not need to be restarted. As described herein, one or more tasks of port monitor 222 can be offloaded to and / or controlled by NIC 202 and its underlying hardware, such as DPU 206 executing instructions from firmware 208 and / or instruction data store 210. For example, NIC 202 can perform monitoring of existing connections or new connections, and can then send a signal to orchestrator 220 to initiate a data path update.

[0038] In this example, interface 214 can be a representative interface to a host. It should be understood that while various terms used herein can refer to Ethernet and IP protocols, the systems and methods can be used with any L2 interface technology capable of integration with a software defined network data path. In operation, ports 204 and / or virtual ports 216 are configured in promiscuous mode and act as pass-through ports for Ethernet frames without the need to alter MAC addresses. Interface 214 can be configured to control MAC addresses and address resolution protocol (ARP) in order to advertise itself to network 230, regardless of whether traffic is bridged through port 0 204A or port 1 204B or other potentially available ports.

[0039] In at least one embodiment, the software-defined data path (e.g., associated with virtual switch fabric 212) can be modified such that one or more rules specifying interface 214 are cloned to redirect traffic to different ports 204A-204N. For example, the data path can store multiple versions of one rule, one version defining a first port, one version defining a second port, and so on. Alternatively, the data path can tag or otherwise label port references within different rules such that, upon determining that a port has been swapped, the port within the different rules can be easily identified and modified to redirect traffic. In at least one embodiment, various rules can be stored for different ports, then prioritized based on a selected port for network traffic. In an example for storing multiple rules, a first rule associated with port 0 204A can be cloned such that a reference to port 0 204A is replaced with a reference to port 1 204B. In operation, one of the rules can be deactivated and / or activated to route traffic appropriately. In at least one embodiment, the rules can be shared or otherwise accessed by SDN engine 224 to facilitate recovery in the event of a failure or reset.

[0040] Various embodiments can utilize functionality of NIC 202. For example, firmware 208 can provide support for state detection of active ports. Monitoring functionality supported by the NIC can be used alone, or can be used in conjunction with port monitor 222. For example, port monitor 222 can also communicate with NIC 202 to obtain information collected by NIC 202. For example, port state change notifications can be provided through polling or callbacks.

[0041] As described herein, the controller 218 can also be referred to as a high availability controller that acts as a resilient orchestrator to control the process of switching physical ports. In certain embodiments, the controller 218 and / or components thereof receive a notification from a port state monitor (e.g., port state monitor 222, components of the NIC 202, etc.) that a port failure is imminent or has occurred. The controller 218 can then mute the SDN engine 224 to stop negotiating new rules with the datapath, thereby stopping the loss of packets. The port monitor 222 can then trigger the selector 226 to interface the network 230 to the backup port. Subsequently, the port monitor 222 or equivalent NIC component can poll to confirm that the startup of the new port link has completed. As described herein, performing further operations without verifying the new port link can utilize unnecessary computing resources. Upon a completion signal from the port monitor 222 and / or equivalent NIC component, the orchestrator 220 can signal the datapath to activate cloned flows for the newly activated port and deactivate the old flows or re-prioritize existing rules accordingly, so that the rules for the new port are matched first. Alternatively, the orchestrator 220 can signal the datapath to update or modify one or more rules based on the identification of the new port. As another alternative, in certain embodiments, the orchestrator 220 can alter one or more priorities of one or more rules used to direct network traffic. Thus, systems and methods can be used to redirect traffic flows using virtualized port services and then link the traffic through a selected port of the underlying NIC 202.

[0042] Various embodiments of the present disclosure can relate to systems and methods for updating one or more rules to control traffic of a datapath. In at least one embodiment, traffic can be controlled by a software stack that determines a network connection associated with a first port moves to a second port based on a location of an optical port selector. For example, the port selector 226 can move from port 0 204A to port 1 204B. One or more rules associated with the datapath can also be identified. These rules can be stored locally on the NIC 202 and / or can be stored as part of the controller 218 and / or virtual switch fabric stack 212. The one or more rules can be identified based on one or more identifiers or instructions associated with the first port, such as port 0 204A. The one or more rules can then be updated to direct traffic to the second port. Updating the rules can include altering values within the rules to associate them with the second port, such as port 1 204B. The one or more rules can also be updated to deactivate rules associated with the first port and activate one or more rules associated with the second port. Thus, the updated one or more rules can be used to control subsequent traffic to the NIC 202.

[0043] The system and method can also be directed to a network system including at least the NIC 202, the selector 226, and the controller 218. The controller can execute one or more software instructions to determine whether the selector 226 has changed from receiving data from a first port to receiving data from a second port. In at least one embodiment, the selector 226 is a physical component associated with the NIC 202, and the position of the selector 226 can indicate the associated port used to receive data. For example, the selector 226 can open or close an optical path for data communication, change alignment between different optical paths, and the like. In at least one embodiment, in response to a determination of a port failure (such as determined by the firmware 208), the selector 226 can stop receiving signals from the port 0 204A and begin receiving signals from the port 1 204B. Once a new connection using the port 1 204B is determined to be established, one or more rules associated with the NIC 202 for routing traffic can be updated. For example, one or more rules referencing a first port (e.g., the port 0 204A) can be updated to reference a second port (e.g., the port 1 204B).

[0044] In at least one embodiment, one or more processes or methods can be implemented to determine that a network connection associated with a second port is established after a switch from a first port. For example, after the optical selector 226 switches from a first port to a second port, a network connection associated with the second port can be verified before continuing to update network traffic rules. One or more identifiers associated with the first port can be located in a software-defined data path, and can be updated to reference the second port. Accordingly, traffic received at the associated NIC 202 can be subsequently routed to use the second port according to the updated software-defined data path.

[0045] Various embodiments can also include one or more methods for determining whether a network connection to a target port has been established. The one or more methods can also include identifying one or more rules associated with a previous port within a software-defined data path. For example, the target port can be a second port after the optical selector has been switched, and the previous port can be the port switched away from. In at least one embodiment, one or more updated rules for the software-defined data path can be generated. The updated one or more rules can replace the previous port with the target port within the one or more rules. Thereafter, transmissions along the network connection can be performed according to the one or more updated rules.

[0046] The systems and methods can also be directed to a NIC with two or more ports and a controller, such as NIC 202 and controller 218. Controller 218 or a component thereof can be used to determine whether a first state of a first port of the two or more ports has a threshold. For example, port monitor 222 can determine whether a value associated with the first port indicates a failure or impending failure, among others. Thereafter, controller 218 can be used to establish a connection with a network using a second port of the two or more ports. For example, a signal can be sent to light selector 226 to use the second port. Upon verification of the new connection, one or more rules associated with NIC 202 for traffic can be updated to use the second port.

[0047] In at least one embodiment, one or more software-defined data paths can be used to determine a change in a port state for a network connection. Based on the change, one or more rules associated with the data path can be updated. Thereafter, data can be transmitted based on the updated one or more rules.

[0048] Figure 3A An example environment 300 that can be used to update one or more traffic routing rules is shown in accordance with embodiments of the present disclosure. In this example, port monitor 222 can provide one or more signals or indicators to orchestrator 220 regarding a port state of a given NIC. As described herein, inclusion of port monitor 222 is provided by way of example only, and in one or more embodiments, NIC 202 can also provide information to orchestrator 220, and / or alternatively, provide information to orchestrator 220. For example, these signals can provide information related to an impending or current port failure. As a result of the port failure, orchestrator 220 can provide a signal to SDN engine 224 to pause traffic until the port failure is repaired. For example, port monitor 222 can provide a second signal indicating a newly established connection using a new port. Orchestrator 220 can then initiate one or more workflows to update or modify one or more traffic routing rules.

[0049] One or more traffic routing rules can be stored in a rules data store 302, which can be accessed by orchestrator 220. In this example, rule 304 corresponds to an instruction for routing traffic, and can contain a reference 306 to one or more ports. For example, rule 304 contains a reference 306A, 306B to port 0. If port 0 is associated with an initial failure signal from port monitor 222, the systems and methods of the present disclosure can be used to update or otherwise modify rule 304 to replace the reference to port 0 with a newly established connection using a different port.

[0050] In this example, a new or updated rule 308 is generated, where the reference to port 0 is replaced by port 1. The new rule 308 can then be provided back to the rule data store 302 and / or the SDN engine 224 to restart the traffic flow according to the parameters specified in the new rule 308. Various embodiments allow for the updating and modification of rule 304 in a shorter time than the link interruption threshold (e.g., shorter than a full reset trigger), thus eliminating the need for link-related workflows to be restarted.

[0051] Figure 3B An example environment 320 according to an embodiment of this disclosure is shown, which can be used to change the rule status for one or more traffic routing rules. In this example, port monitor 222 can be used to notify orchestrator 220 of one or more impending and / or current port failures, as well as the status of newly selected and established ports, as described herein. Figure 3A Similarly, port monitor 222 can be replaced and / or supplemented by NIC 202. Due to a port failure, orchestrator 220 can signal to SDN engine 224 to suspend traffic until the port failure is repaired, and then orchestrator 220 can initiate one or more workflows to update or modify one or more traffic routing rules.

[0052] like Figure 3A As shown, one or more traffic routing rules can be stored in a rule data store 302, which can be accessed by the orchestrator 220. In this example, rule set 304 can be included in the rule data store 302 along with an associated status identifier 322. The status identifier 322 can correspond to the current state of a rule, such as whether the rule is being executed. The status identifier 322 can be an adjustable parameter that allows different rules to be activated or deactivated in response to different traffic flows, settings, etc. In at least one embodiment, a rule can be associated with a given port and can be copied or cloned to be associated with other potential ports for a given NIC. For example, in the illustrated embodiment, rule A can correspond to rule D, but port 0 is associated with rule A and port 1 is associated with rule D. However, in other embodiments, the rules can be different and / or may contain other differences.

[0053] In response to determining a port failure and establishing new connections for different ports, the status identifier 322 of the corresponding rule 304 associated with port 0 can switch from "active" to "inactive," while the rule 304 associated with port 1 can switch from "inactive" to "active." Therefore, the system and method can quickly modify traffic routing rules in response to port status.

[0054] Figure 3CAn example environment 330 is shown in accordance with embodiments of the present disclosure, which can be used to alter rule states for one or more traffic routing rules. In this example, the port monitor 222 can be used to inform the orchestrator 220 of one or more impending and / or current port failures, as well as the status of newly selected and established ports, as described herein. Similar to Figure 3A and Figure 3B Likewise, the port monitor 222 can be replaced and / or supplemented by the NIC 202. As a result of the port failure, the orchestrator 220 can provide a signal to the SDN engine 224 to pause traffic until the port failure is repaired, and then the orchestrator 220 can initiate one or more workflows to update or modify one or more traffic routing rules.

[0055] As shown in Figure 3A and Figure 3B One or more traffic routing rules can be stored in a rules data store 302, which can be accessed by the orchestrator 220, as shown. In this example, a ruleset 304 can be contained in the rules data store 302 with priority designations 332. The priority designations 332 can correspond to an order of application of the rules and / or an ordering of rules to be applied. In at least one embodiment, rules with a threshold value can not be executed. The values shown are by way of non-limiting example. For example, not every rule 304 has a different priority value, but rather all rules that are set to be executed can have a first value, and all other rules can have a second value. In at least one embodiment, rules can be associated with a given port, and can be duplicated or cloned to be associated with other potential ports for a given NIC, as described herein. However, in other embodiments, the rules can not be identical and / or can contain other differences.

[0056] In response to the determination of the port failure and the newly established port, the priority designations 332 for the respective rules 304 associated with port 0 can be switched from values associated with active execution (values 1-3 in this example) to values associated with inactive execution (values 4-6 in this example), while the rules 304 associated with port 1 can be switched from values associated with inactive execution to values associated with active execution. Thus, the systems and methods can quickly modify traffic routing rules in response to port status.

[0057] Figure 3DAn example call diagram 340 that can be used in embodiments of the present disclosure is shown. As described herein, one or more calls or commands can be communicated from one or more alternative sources. For example, the port monitor 222 can be replaced and / or supplemented by the NIC 202, among other various options. In this example, the NIC 202 provides a data signal 342 to a port selector 226. This data signal can be an optical signal that is communicated to the port selector 226, which can be an optical selector that is aligned with one or more ports of the NIC 202. In at least one embodiment, the port monitor 222 can monitor a selector position 344 to determine which port of the NIC 202 is transmitting data. For example, the selector position can indicate a certain port. Alternatively or additionally, the port monitor 222 can also monitor the ports of the NIC 202 346 to assess port health, such as to determine an impending or existing failure.

[0058] In at least one embodiment, an impending and / or imminent failure 348 can be determined by the port monitor 222. For example, one or more signals that are indicative of a failure, such as a latency or loss of data transmission, among other options, can be associated with the monitoring 344, 346. Accordingly, the port monitor 222 can notify 350 the orchestrator 220, which can subsequently instruct 352 the SDN engine 224 to abort further traffic.

[0059] In at least one embodiment, the selector 226 can switch the position associated with the NIC 202 to establish a new connection (e.g., using a new port), and the port monitor 222 can verify 354 that a successful connection has been established. Upon verifying the new connection, the port monitor 222 can update 356 the port status to the orchestrator 220, which can subsequently implement 358 one or more workflows to update one or more rules associated with network traffic. For example, the virtual switch fabric 212 can update various routing rules 360 and / or receive updated routing rules, which are then used to direct 362 traffic using the NIC 202 according to the updated rules.

[0060] Figure 4AAn example flow 400 is shown that can be used to update one or more rules to control traffic for a data path. It should be appreciated that for this and other flows introduced herein, more, fewer, or alternative operations can be performed in similar or alternative order or at least partially in parallel within the scope of various embodiments unless otherwise explicitly stated. In this example, it can be determined that a network connection associated with a first port is moved to a second port 402. The movement of the connection can be based on a signal received from one or more port selectors, such as an optical port selector. In at least one embodiment, one or more interfaces can be used to obtain selector position information. The position information can be obtained using one or more port monitors and / or using hardware associated with the NIC. In at least one embodiment, one or more rules used to direct traffic associated with the NIC can be determined. For example, the rules can be associated with a virtualized data path and can include one or more references to the first port (e.g., the port that was switched away). The rules can be identified according to various markers or references, among other options.

[0061] In at least one embodiment, one or more rules associated with the first port are updated to redirect traffic to the second port 406. For example, the rules can be altered to remove references to the first port and replace the references to the first port with references to the second port. In another example, one or more rules associated with the first port can be deactivated while one or more rules associated with the second port are activated. Further, in at least one embodiment, one or more rules associated with the first port can have a priority value that is altered to be lower than one or more rules associated with the second port. The updated one or more rules can then be used to direct traffic for the data path 408. Thus, systems and methods can implement quick changes to traffic control rules based on an indication associated with a port failure or impending failure.

[0062] Figure 4B An example process 420 for updating traffic routing rules is shown. In this example, it can be determined that a port selector has been physically altered from a first port to a second port 422. For example, the port selector can be an optical fiber port selector and can send a signal in response to a movement between the optical fiber ports. It can then be determined that a new network connection is established using the second port 424. For example, the second connection can include one or more handshakes or other connection steps that can be verified to ensure that the connection has been formed before updating any other routing rules. One or more rules can then be updated to redirect traffic from the first port to the second port 426. The updated rules can include modifications to the rules, altering a rule priority, activating or deactivating a rule, and / or combinations thereof.

[0063] Figure 4C An example process 430 is shown for flowing network traffic using a software defined data path. In this example, it can be determined that a network connection associated with a second port is established after a switch from a first port 432. The switch can be the result of a port failure, impending port failure, or the like. One or more software defined data paths can then be evaluated to determine a location of one or more identifiers associated with the first port 434. For example, certain references to the first port can be associated with an identifier or other characteristic to quickly identify the port location within the data path. An updated software defined data path can then be generated 436. For example, the updated software defined data path can replace references to the first port with references to the second port. Thereafter, the updated software defined data path can be used to route data transmissions 438.

[0064] Figure 5A An example process 500 is shown for transmitting network traffic according to one or more rules. In this example, a network connection is established for a target port 502. The target port can be a new port selected after a previous port fails. A software defined data path can then be evaluated to identify one or more rules associated with the previous port 504, which can include the port switched away. One or more updated rules can then be generated to replace the previous port within the rules with the target port 506. Thereafter, the one or more updated rules can be used to route transmissions along the network connection 508.

[0065] Figure 5B An example process 520 is shown for transmitting network traffic according to one or more rules. In this example, it can be determined that a port status has changed for a network connection 522. For example, the port status can change to indicate a failure or impending failure, or the like. One or more rules associated with a data path can then be updated based on the changed port status 524. For example, if the port status is determined to be a failure, the rules can be deactivated. As another example, if the port status is determined to indicate a new network connection, the rules can be activated. The updated one or more rules can then be used to route traffic 526.

[0066] Figure 5CAn example process 530 for updating one or more rules for network traffic is shown. In this example, a first state of a first port is determined to have a threshold 532. In at least one embodiment, this threshold can indicate a failure or impending failure, among others. A connection with the network using a second port can then be established 534. For example, a port selector can use a different port for an associated NIC. One or more traffic rules for traffic associated with the first port can then be updated to redirect the traffic to the second port 536. In this way, physical connection changes can be identified and updated.

[0067] As noted above, aspects of the various methods presented herein can be light enough to execute in real-time on a device such as a client device such as a personal computer or game console. Such processing can be performed in relation to or for content generated on or received by the client device or content received from an external source (such as stream data or other content received over at least one network). In some cases, processing and / or determination of the content can be performed by one of these other devices, systems, or entities, which is then provided to the client device (or another such recipient) for presentation or other such use.

[0068] As an example, Figure 6An example network configuration 600 that can be used to provide, generate, modify, encode, process, and / or transmit image data or other such content is shown. In at least one embodiment, a client device 602 can generate or receive data for a session using components of a control application 604 on the client device 602 and data stored locally on the client device. In at least one embodiment, a content application 624 executing on a server 620 (e.g., a cloud server or edge server) can initiate a session associated with at least one client device 602, can utilize a session manager and user data stored in a user database 636, and can cause a content manager 626 to determine content, such as one or more digital assets (e.g., object representations), from an asset repository 634. The content manager 626 can work with an image synthesis module 628 to generate or synthesize new objects, digital assets, or other such content for provision for presentation by the client device 602. In at least one embodiment, this image synthesis module 628 can use one or more neural networks or machine learning models that can be trained or updated using a training module 632 or system located on or in communication with the server 620. This can include training and / or using a diffusion model 630 to generate content tiles that can be used by the tile synthesis module 628, such as to apply non-repeating textures to environmental regions for which image or video data is to be presented by the client device 602. At least a portion of the generated content can be transmitted to the client device 602 using an appropriate transport manager 622 for sending over a download, stream, or another such transmission channel. An encoder can be used to encode and / or compress at least a portion of these data before transmission to the client device 602. In at least one embodiment, a client device 602 receiving such content can provide the content to a corresponding control application 604, which can also or alternatively include a graphical user interface 610, content manager 612, and image synthesis or diffusion module 614 for providing, synthesizing, modifying, or otherwise using the content for presentation on or by the client device 602 (or other purposes). A decoder can also be used to decode data received over the network 640 for presentation by the client device 602, such as image or video content presented by a display 606 and audio (e.g., sounds and music) presented by at least one audio playback device 608 (e.g., speakers or headphones). In at least one embodiment, at least a portion of the content can already be stored on the client device 602, rendered on the client device 602, or accessible to the client device 602, so that at least this portion of the content does not need to be transmitted over the network 640, such as can have been previously downloaded or stored locally on a hard drive or optical disc.In at least one embodiment, content can be transmitted from server 620 or user database 636 to client device 602 using a transmission mechanism, such as data streaming. In at least one embodiment, at least a portion of this content can be sourced, augmented, and / or streamed from another source, such as third party service 660 or other client device 650, which can also include content application 662 for generating, augmenting, or providing content. In at least one embodiment, portions of this functionality can be performed using multiple computing devices or multiple processors within one or more computing devices, such as a combination that can include CPUs and GPUs.

[0069] In this example, these client devices can include any appropriate computing device, such as a desktop computer, notebook computer, set-top box, streaming device, game console, smartphone, tablet computer, VR headset, AR eyewear, wearable computer, or smart television. Each client device can submit requests across at least one wired or wireless network, which can include the Internet, an Ethernet network, a local area network (LAN), or a cellular network, among other such options. In this example, these requests can be submitted to an address associated with a cloud provider, which can operate or control one or more electronic resources under a cloud provider environment, such as can include a data center or server farm. In at least one embodiment, this request can be received or processed by at least one edge server located at the edge of a network and outside of at least one security layer associated with a cloud provider environment. In this way, latency can be reduced by enabling client devices to interact with servers that are closer in distance, while also improving security of resources in a cloud provider environment.

[0070] In at least one embodiment, such a system can be used to perform graphics rendering operations. In other embodiments, such a system can be used for other purposes, such as to provide image or video content for testing or validating autonomous machine applications, or to perform deep learning operations. In at least one embodiment, such a system can be implemented using edge devices, or can incorporate one or more virtual machines (VMs). In at least one embodiment, such a system can be implemented at least partially in a data center or at least partially using cloud computing resources.

[0071] Data Center

[0072] Figure 7 An example data center 700 that can use at least one embodiment is shown. In at least one embodiment, data center 700 includes a data center infrastructure layer 710, a framework layer 720, a software layer 730, and an application layer 740.

[0073] In at least one embodiment, asFigure 7 As shown, the data center infrastructure layer 710 can include a resource orchestrator 712, grouped computing resources 714, and node computing resources (“node C.R.s”) 716(1)-716(N), where “N” represents any positive integer. In at least one embodiment, node C.R.s 716(1)-716(N) can include, but are not limited to, any number of central processing units (“CPUs” or “processors”), including accelerators, field programmable gate arrays (FPGAs), graphics processors, etc., memory devices (e.g., dynamic random access memory), storage devices (e.g., solid state or disk drives), network input / output (“NWI / O”) devices, network switches, virtual machines (“VMs”), power modules, and cooling modules, etc. In at least one embodiment, one or more node C.R.s of node C.R.s 716(1)-716(N) can be a server having one or more of the above-described computing resources.

[0074] In at least one embodiment, grouped computing resources 714 can include individual groups of node C.R.s housed within one or more racks (not shown), or housed within a number of racks (also not shown) within various geographic locations. Individual groups of node C.R.s within grouped computing resources 714 can include groups of computing, network, memory, or storage resources that can be configured or allocated to support one or more workloads. In at least one embodiment, several node C.R.s including CPUs or processors can be grouped within one or more racks to provide computing resources to support one or more workloads. In at least one embodiment, one or more racks can also include any number of power modules, cooling modules, and network switches, in any combination.

[0075] In at least one embodiment, resource orchestrator 712 can configure or otherwise control one or more node C.R.s 716(1)-716(N) and / or grouped computing resources 714. In at least one embodiment, resource orchestrator 712 can include a software design infrastructure (“SDI”) management entity for data center 700. In at least one embodiment, resource orchestrator 107 can comprise hardware, software, or some combination thereof.

[0076] In at least one embodiment, as Figure 7As shown, the framework layer 720 includes a job scheduler 722, a configuration manager 724, a resource manager 726, and a distributed file system 728. In at least one embodiment, the framework layer 720 can include a framework that supports software 732 of a software layer 730 and / or one or more applications 742 of an application layer 740. In at least one embodiment, software 732 or applications 742 can include web-based service software or applications, respectively, such as services or applications provided by Amazon Web Services, Google Cloud, and Microsoft Azure. In at least one embodiment, the framework layer 720 can be, but is not limited to, a type of free and open-source software web application framework such as Apache Spark (hereinafter “Spark”) that can utilize the distributed file system 728 for large-scale data processing (e.g., “big data”). TM In at least one embodiment, the job scheduler 732 can include a Spark driver to facilitate scheduling workloads supported by various layers of the data center 700. In at least one embodiment, the configuration manager 724 can be capable of configuring different layers, such as the software layer 730 and the framework layer 720 including Spark and the distributed file system 728 for supporting large-scale data processing. In at least one embodiment, the resource manager 726 can be capable of managing clustered or grouped computing resources mapped to or allocated for supporting the distributed file system 728 and the job scheduler 722. In at least one embodiment, the clustered or grouped computing resources can include the grouped computing resources 714 on the data center infrastructure layer 710. In at least one embodiment, the resource manager 726 can coordinate with the resource orchestrator 712 to manage these mapped or allocated computing resources.

[0077] In at least one embodiment, the software 732 included in the software layer 730 can include software used by at least a portion of the node C.R.s 716(1)-716(N), the grouped computing resources 714, and / or the distributed file system 728 of the framework layer 720. One or more types of software can include, but are not limited to, Internet web page search software, email virus scanning software, database software, and streaming video content software.

[0078] In at least one embodiment, one or more application programs 742 included in application layer 740 can include one or more types of application programs used by at least portions of node C.R.s 716(1)-716(N), grouped computing resources 714, and / or distributed file system 728 of framework layer 720. One or more types of application programs can include, but are not limited to, any number of genomics applications, cognitive computing and machine learning applications including training or inferencing software, machine learning framework software (e.g., PyTorch, TensorFlow, Caffe, etc.), or other machine learning applications used in conjunction with one or more embodiments.

[0079] In at least one embodiment, any of configuration manager 724, resource manager 726, and resource orchestrator 712 can implement any number and type of self-modification actions based on any amount and type of data acquired in any technically feasible fashion. In at least one embodiment, self-modification actions can mitigate poor configuration decisions made by data center operators of data center 700 and can avoid underutilization and / or poorly performing portions of a data center.

[0080] In at least one embodiment, data center 700 can include tools, services, software, or other resources to train one or more machine learning models or use one or more machine learning models to predict or infer information in accordance with one or more embodiments described herein. For example, in at least one embodiment, a machine learning model can be trained by computing weight parameters according to a neural network architecture using software and computing resources described above with respect to data center 700. In at least one embodiment, using weight parameters computed by one or more training techniques described herein, a trained machine learning model corresponding to one or more neural networks can be used to infer or predict information using resources described above with respect to data center 700.

[0081] In at least one embodiment, a data center can use CPUs, application specific integrated circuits (ASICs), GPUs, FPGAs, or other hardware to perform training and / or inference using resources described above. Furthermore, one or more software and / or hardware resources described above can be configured as a service to allow users to train or perform information inference, such as image recognition, speech recognition, or other artificial intelligence services.

[0082] Inference and / or training logic 715 are used to perform inferencing and / or training operations associated with one or more embodiments. In at least one embodiment, inference and / or training logic 715 are used in Figure 7Inference and / or prediction operations in the system can be based, at least in part, on weight parameters calculated using neural network training operations, neural network functions, and / or architectures or neural network use cases described herein.

[0083] Such components can be used for network traffic monitoring and control.

[0084] Computer system

[0085] Figure 8 is a block diagram illustrating an example computer system, which can be a system with interconnected devices and components, a system on a chip (SOC), or some combination thereof formed with a processor that can include execution units to execute an instruction, according to at least one embodiment. In at least one embodiment, consistent with the present disclosure, such as the embodiments described herein, computer system 800 can include, without limitation, components such as processor 802 whose execution units include logic to perform an algorithm for process data. In at least one embodiment, computer system 800 can include a processor such as a Intel® TM , XScale TM and / or Intel® TM StrongARM TM , Intel® TM or Intel® TM Nervana TM microprocessors, although other systems (including PCs, workstations, set-top boxes, etc. with other microprocessors) can also be used. In at least one embodiment, computer system 800 can execute a version of the WINDOWS operating system available from Microsoft Corporation of Redmond, Wash., although other operating systems, embedded software, and / or graphical user interfaces can also be used.

[0086] Embodiments can be used in other devices such as handheld devices and embedded applications. Some examples of handheld devices include cellular phones, Internet Protocol devices, digital cameras, personal digital assistants ("PDAs"), and handheld PCs. In at least one embodiment, embedded applications can include a microcontroller, a digital signal processor ("DSP"), a system on a chip, a network computer ("NetPC"), a set-top box, a network hub, a wide area

[0087] In at least one embodiment, computer system 800 can include, but is not limited to, processor 802, which can include, but is not limited to, one or more execution units 808 to perform machine learning model training and / or inferencing according to techniques described herein. In at least one embodiment, computer system 800 is a single processor desktop or server system, but in another embodiment, computer system 800 can be a multiprocessor system. In at least one embodiment, processor 802 can include, but is not limited to, a complex instruction set computer ("CISC") microprocessor, a reduced instruction set computing ("RISC") microprocessor, a very long instruction word ("VLIW") microprocessor, a processor implementing a combo of instruction sets, or any other processor device, such as a digital signal processor. In at least one embodiment, processor 802 can be coupled to a processor bus 810 that can transmit data signals between processor 802 and other components in computer system 800.

[0088] In at least one embodiment, processor 802 can include, but is not limited to, level 1 ("Ll") internal cache memory ("cache") 804. In at least one embodiment, processor 802 can have a single -level internal cache or multi-level internal cache. In at least one embodiment, cache memory can reside in the processor 802's external. Other embodiments can include a combination of internal and external caches based on specific implementation and requirements. In at least one embodiment, register file 806 can store different types of data within various registers including, but not limited to, integer registers, floating point registers, status registers, and instruction pointer registers.

[0089] In at least one embodiment, execution unit 808 includes, without limitation, logic to perform integer and floating-point operations, including bit- wide operations. In at least one embodiment, processor 802 can also include a microcode (“ucode”) read only memory (“ROM”) that stores microcode for certain macro instructions. In at least one embodiment, execution unit 808 can also include logic to handle a packed instruction set 809. In at least one embodiment, by including packed instruction set 809 in a general-purpose processor, many multimedia applications can be accelerated by using full width of data bus of processor 802. In one or more embodiments, by using full width of data bus of processor for operations on packed data, many multimedia applications can be executed more efficiently and speedier.

[0090] In at least one embodiment, execution unit 808 can also be used in microcontrollers, embedded processors, graphics devices, DSPs, and other types of logic circuits. In at least one embodiment, computer system 800 can include, without limitation, memory 820. In at least one embodiment, memory 820 can be implemented as a Dynamic Random Access Memory (“DRAM”) device, a Static Random Access Memory (“SRAM”) device, a flash memory device, or other memory device. In at least one embodiment, memory 820 can store instruction(s) 819 and / or data 821 represented by data signals that can be executed by processor 802.

[0091] In at least one embodiment, a system logic chip can be coupled to processor bus 810 and memory 820. In at least one embodiment, system logic chip can include, without limitation, a memory controller hub (“MCH”) 816 and processor 802 can communicate with MCH 816 via processor bus 810. In at least one embodiment, MCH 816 can provide a high bandwidth memory path 818 to memory 820 for instruction and data storage and for storage of graphics commands, data, and textures. In at least one embodiment, MCH 816 can direct data signals between processor 802, memory 820, and other components in computer system 800, and

[0092] In at least one embodiment, computer system 800 can use system I / O 822, which is a proprietary hub interface bus to couple MCH 816 to I / O controller hub (“ICH”) 830. In at least one embodiment, ICH 830 can provide a direct connection to some I / O devices and indirectly through high-speed I / O bus. In at least one embodiment, high-speed I / O bus can include, without limitation, a high-speed I / O bus, for connecting peripheral devices to memory 820, chipset, and processor 802. Examples can include, without limitation, a

[0093] In at least one embodiment, Figure 8 A system is shown that includes interconnected hardware devices or “chips,” while in other embodiments, Figure 8An exemplary system on a chip (SoC) can be shown. In at least one embodiment, devices can be interconnected with proprietary interconnects, standardized interconnects (e.g., PCIe), or some combination thereof. In at least one embodiment, one or more components of computer system 800 are interconnected using a compute express link (CXL) interconnect.

[0094] Inference and / or training logic 715 are used to perform inferencing and / or training operations associated with one or more embodiments. In at least one embodiment, inference and / or training logic 715 can be used in place of, or in conjunction with inference and / or training logic 705 described elsewhere herein. Figure 8 Inference and / or training logic 715 are used to perform inferencing and / or training operations associated with one or more embodiments. In at least one embodiment, inference and / or training logic 715 can be used in place of, or in conjunction with inference and / or training logic 705 described elsewhere herein.

[0095] Such components can be used in network traffic monitoring and control.

[0096] Figure 9 FIG. 9 is a block diagram illustrating an electronic device 900 for utilizing a processor 910, in accordance with at least one embodiment. In at least one embodiment, electronic device 900 can be, for example and without limitation, a laptop, a tower server, a rack server, a blade server, a laptop computer, a desktop computer, a tablet computer, a mobile device, a phone, an embedded computer, or any other suitable electronic device.

[0097] In at least one embodiment, electronic device 900 can include, without limitation, a processor 910 communicatively coupled to any suitable number or kind of components, peripherals, modules, or devices. In at least one embodiment, processor 910 is coupled using a bus or interface, such as an 1C bus, a System Management Bus (“SMBus”), a Low Pin Count (LPC) bus, a Serial Peripheral Interface (“SPI”), a High Definition Audio (“HDA”) bus, a Serial Advanced Technology Attachment (“SATA”) bus, a Universal Serial Bus (“USB”) (versions 1, 2, 3), or a Universal Asynchronous Receiver / Transmitter (“UART”) bus. In at least one embodiment, processor 910 is coupled to one or more input devices 920 and one or more output devices 930. Figure 9 A system is shown that includes interconnected hardware devices or “chips,” while in other embodiments, Figure 9 An exemplary system on a chip (SoC) can be shown. In at least one embodiment, Figure 9 Devices shown in FIG. 9 can be interconnected with proprietary interconnects, standardized interconnects (e.g., PCIe), or some combination thereof. In at least one embodiment, Figure 9 One or more components of computer system 800 are interconnected using a compute express link (CXL) interconnect.

[0098] In at least one embodiment, Figure 9The display 924, touch screen 925, touch pad 930, near field communication unit ("NFC") 945, sensor hub 940, thermal sensor 946, express chip set ("EC") 935, trusted platform module ("TPM") 938, BIOS / firmware / flash ("BIOS, FW Flash") 922, DSP 960, drive 920 (such as a solid state disk ("SSD") or a hard disk drive ("HDD")), wireless local area network unit ("WLAN") 950, Bluetooth unit 952, wireless wide area network unit ("WWAN") 956, global positioning system ("GPS") 955, camera ("USB 3.0 camera") 954 (such as a USB 3.0 camera), and / or low power double data rate ("LPDDR") memory unit ("LPDDR3") 915 implemented in, for example, LPDDR3 standard, can each be implemented in any suitable manner.

[0099] In at least one embodiment, other components can be communicatively coupled to processor 910 by components described above. In at least one embodiment, accelerometer 941, ambient light sensor ("ALS") 942, compass 943, and gyroscope 944 can be communicatively coupled to sensor hub 940. In at least one embodiment, thermal sensor 939, fan 937, keyboard 936, and touch pad 930 can be communicatively coupled to EC 935. In at least one embodiment, speaker 963, earpiece 964, and microphone ("mic") 965 can be communicatively coupled to audio unit ("audio codec and class D amplifier") 962, which in turn can be communicatively coupled to DSP 960. In at least one embodiment, audio unit 962 can include, for example and without limitation, an audio coder / decoder ("codec") and a class D amplifier. In at least one embodiment, SIM card ("SIM") 957 can be communicatively coupled to WWAN unit 956. In at least one embodiment, components such as WLAN unit 950 and Bluetooth unit 952, as well as WWAN unit 956, can be implemented as a next generation form factor ("NGFF").

[0100] Inference and / or training logic 715 are used to perform inferencing and / or training operations associated with one or more embodiments. In at least one embodiment, inference and / or training logic 715 are used in Figure 9 Inference and / or training logic 715 are used to perform inferencing and / or training operations associated with one or more embodiments. In at least one embodiment, inference and / or training logic 715 are used in

[0101] Such components can be used in network traffic monitoring and control.

[0102] Figure 10is a block diagram of a processing system in accordance with at least one embodiment. In at least one embodiment, system 1000 includes one or more processors 1002 and one or more graphics processors 1008, and can be a single processor desktop system, a multiprocessor workstation system, or a server system having many processors 1002 or processor cores 1007. In at least one embodiment, system 1000 is a processing platform incorporated within a system on a chip (SoC) integrated circuit for use in mobile, handheld, or embedded devices.

[0103] In at least one embodiment, system 1000 can include or be incorporated within a server-based gaming platform, including a game console, a mobile gaming console, a handheld gaming console, or an online gaming console that includes game and media processing consoles. In at least one embodiment, system 1000 is a mobile phone, a smart phone, a tablet device, or a mobile internet device. In at least one embodiment, processing system 1000 can also include a wearable device coupled to or integrated within the wearable device, such as a smart watch wearable device, smart glass device, augmented reality device, or virtual reality device. In at least one embodiment, processing system 1000 is a television or set-top box device having one or more processors 1002 and graphics processors 1008 generating graphics for a graphical interface.

[0104] In at least one embodiment, one or more processors 1002 each include one or more processor cores 1007 to process instructions which, when executed, implement the operations for system and user software. In at least one embodiment, each of the one or more processor cores 1007 is configured to process a specific instruction set 1009. In at least one embodiment, instruction set 1009 can facilitate Complex Instruction Set Computing (CISC), Reduced Instruction Set Computing (RISC), or computing via a Very Long Instruction Word (VLIW). In at least one embodiment, one or more of processor cores 1007 can each process a different instruction set 1009, which can include instructions to facilitate emulation of other instruction sets. In at least one embodiment, one or more processor cores 1007 can each also include other processing devices, such as a digital signal processor (DSP).

[0105] In at least one embodiment, one or more processors 1002 include cache memory 1004. In at least one embodiment, one or more processors 1002 can have a single level of internal cache or multiple levels of internal caches. In at least one embodiment, cache memory is shared among various components of one or more processors 1002. In at least one embodiment, one or more processors 1002 also use an external cache (e.g., a level three (L3) cache, or last level cache (LLC)) (not shown), which can be shared between processor cores 1007 using known cache coherency techniques. In at least one embodiment, additionally included in one or more processors 1002 are register file 1006, which processor can include different types of registers such as integer registers, floating point registers, status registers, and instruction pointer registers to name a few.

[0106] In at least one embodiment, one or more processors 1002 are coupled with one or more interface buses 1010 for passing computer system 1000 messages to other components of the computer system 1000 and for passing computer system 1000 messages from other components of the computer system 1000. In at least one embodiment, one or more interface buses 1010 can be versions of the Peripheral Component Interconnect (PCI) bus and can include address, data, and control lines. In at least one embodiment, one or more interface buses 1010 are not PCI based, and can be, for example, a system management bus (SMBus) or a low pin count (LPC) bus. In at least one embodiment, one or more interface buses 1010 can be a version of the Direct Media Interface (DMI) bus, although other bus types can be used in other embodiments. In at least one embodiment, one or more interface buses 1010 are not limited to DMI buses, and can include one or more Peripheral Component Interconnect Express (PCIe) buses, memory buses, or other types of interface buses. In at least one embodiment, processors 1002 include integrated memory controller 1016 and platform controller hub 1030. In at least one embodiment, memory controller 1016 facilitates communication between memory devices and other components of the processing system 1000, while platform controller hub 1030 provides connections to input / output devices via local I / O bus.

[0107] In at least one embodiment, memory device 1020 can be a Dynamic Random Access Memory (DRAM) device, a Static Random Access Memory (SRAM) device, a flash memory device, or a phase change memory device, among others. In at least one embodiment, memory device 1020 can be a system memory of processing system 1000, to store data 1022 and instructions 1021 for use when one or more processors 1002 executes an application or process. In at least one embodiment, memory controller 1016 also couples with an optional external graphics processor 1012, which can communicate with one or more graphics processors 1008 in one or more processors 1002 to perform graphics and media operations.

[0108] In at least one embodiment, platform controller hub 1030 enables peripherals to connect to storage device 1020 and one or more processors 1002 via a high-speed I / O bus. In at least one embodiment, I / O peripherals include, but are not limited to, an audio controller 1046, a network controller 1034, a firmware interface 1028, a wireless transceiver 1026, a touch sensor 1025, a data storage device 1024 (e.g., solid-state drive (SSD), hard disk drive (HDD), etc.). In at least one embodiment, data storage device 1024 can connect to one or more of processors 1002 via an storage interface (e.g., SATA), or via a peripheral bus, such as a Peripheral Component Interconnect bus (e.g., PCI, PCI Express). In at least one embodiment, touch sensor 1025 can include a touch screen sensor, a pressure sensor, or a fingerprint sensor. In at least one embodiment, wireless transceiver 1026 can be a Wi-Fi transceiver, a Bluetooth transceiver, or a mobile network transceiver such as a 3G, 4G, or Long Term Evolution (LTE) transceiver. In at least one embodiment, firmware interface 1028 enables communication with system firmware, and can be, for example, a unified extensible firmware interface (UEFI). In at least one embodiment, network controller 1034 can enable network connectivity to one or more wired networks. In at least one embodiment, a high-performance network controller (not shown) couples with interface bus 1010. In at least one embodiment, audio controller 1046 is a multi-channel high definition audio controller. In at least one embodiment, processing system 1000 includes an optional legacy I / O controller 1040 for coupling legacy (e.g., Personal System 2 (PS / 2)) devices to system 1000. In at least one embodiment, platform controller hub 1030 can also connect to one or more Universal Serial Bus (USB) controllers 1042 connect input devices, such as keyboard and mouse 1043 combinations, camera 1044, or other USB input devices.

[0109] In at least one embodiment, memory controller 1016 and instances of platform controller hub 1030 can be integrated into a discrete external graphics processor, such as external graphics processor 1012. In at least one embodiment, platform controller hub 1030 and / or memory controller 1016 can be external to one or more processor(s) 1002. For example, in at least one embodiment, system 1000 can include an external memory controller 1016 and platform controller hub 1030, which can be configured as a memory controller hub and a peripheral controller hub in a system chipset that is in communication with a processor(s) 1002.

[0110] Inference and / or training logic 715 are used to perform inferencing and / or training operations associated with one or more embodiments. In at least one embodiment, portions or all of inference and / or training logic 715 can be incorporated in graphics processor 1008. For example, in at least one embodiment, training and / or inference techniques described herein can be performed using one or more ALUs incorporated within graphics processor. In at least one embodiment, weight parameters can be stored in on-chip or off-chip memory and / or registers (not shown) that configure ALUs of graphics processor to perform one or more machine learning algorithms, neural network architectures, use cases, or training techniques described herein.

[0111] Such components can be used for network traffic monitoring and control.

[0112] Figure 11 is a block diagram of a processor 1100 having one or more processor cores 1102A-1102N, an integrated memory controller 1114, and an integrated graphics processor 1108, according to at least one embodiment. In at least one embodiment, processor 1100 can include additional cores, up to and including an additional core 1102N represented by a dashed lined in FIG. 11. In at least one embodiment, each processor core 1102A-1102N includes one or more internal cache units 1104A-1104N. In at least one embodiment, each processor core can also include access to one or more shared cache units 1106.

[0113] In at least one embodiment, internal cache units 1104A-1104N and shared cache unit 1106 represent a cache memory hierarchy within processor 1100. In at least one embodiment, cache unit(s) 1104A-1104N can include at least one level of instruction and data caches per processor core and one or more shared mid-level caches, such as Level 2 (L2), Level 3 (L3), Level 4 (L4), or other levels of cache, with the top level of cache being classified as LLC. In at least one embodiment, cache coherence logic maintains coherence between various cache units 1106 and 1104A-1104N.

[0114] In at least one embodiment, processor 1100 also includes a set of one or more bus controller units 1116 and a system agent core 1110. In at least one embodiment, one or more bus controller units 1116 manage a set of peripheral buses, such as one or more PCI or PCIe buses. In at least one embodiment, system agent core 1110 provides management functionality for various processor components. In at least one embodiment, system agent core 1110 includes one or more integrated memory controllers 1114 to manage access to various external memory devices (not shown), including support for data bus protocols such as DDR SDRAM.

[0115] In at least one embodiment, one or more processor cores 1102A-1102N include support to run application specific logic, in at least one embodiment, in at least one embodiment, system agent core 1110 includes a set of one or more integrated memory controllers 1114 to manage access to various external memory devices, including support for data bus protocols such as DDR SDRAM.

[0116] In at least one embodiment, processor 1100 also includes graphics processor 1108 to perform graphics processing operations. In at least one embodiment, graphics processor 1108 couples with shared cache unit 1106, and system agent core 1110, including one or more integrated memory controllers 1114. In at least one embodiment, system agent core 1110 also includes a display controller 1111 to drive output to one or more coupled displays. In at least one embodiment, display controller 1111 can also be a separate module coupled with graphics processor 1108 via at least one interconnect, or can be integrated within graphics processor 1108.

[0117] In at least one embodiment, ring based interconnect unit 1112 is used to couple the internal components of processor 1100. In at least one embodiment, an alternative interconnect unit can be used, such as a point-to-point interconnect, a switched interconnect, or other technology. In at least one embodiment, graphics processor 1108 couples with ring based interconnect unit 1112 via I / O link 1113.

[0118] In at least one embodiment, I / O link 1113 represents at least one of a variety of I / O interconnects including a package I / O interconnect that facilitates communication between various processor components and a high performance embedded memory module 1118 (e.g., an eDRAM module). In at least one embodiment, each of processor core(s) 1102A-1102N and graphics processor 1108 uses embedded memory module 1118 as a shared last level cache.

[0119] In at least one embodiment, processor core(s) 1102A-1102N are homogeneous cores executing a common instruction set architecture. In at least one embodiment, processor core(s) 1102A-1102N are heterogeneous with respect to instruction set architecture (ISA) in that one or more processor cores 1102A-1102N execute a common instruction set while one or more other processor cores 1102A-1102N execute a subset or a different instruction set. In at least one embodiment, processor cores 1102A-1102N are heterogeneous with respect to microarchitecture in that one or more cores have a relatively higher power consumption coupled with one or more power cores having a lower power consumption. In at least one embodiment, processor 1100 can be implemented or realized as a SoC integrated circuit.

[0120] Inference and / or training logic 715 are used to perform inferencing and / or training operations associated with one or more embodiments. In at least one embodiment, portions or all of inference and / or training logic 715 can be incorporated in processor 1100. For example, in at least one embodiment, training and / or inference techniques described herein can be performed by graphics processor 1108, processor cores 1102A-1102N, or other components of Fig. 11 using one or more ALUs embodied as part of those components. Figure 11 In at least one embodiment, weight parameters can be stored in on-chip or off-chip memory and / or registers (shown or not) that configure ALUs of graphics processor 1100 / 1108 to perform one or more machine learning algorithms, neural network architectures, use cases, or training techniques described herein.

[0121] Such components can be used in network traffic monitoring and control.

[0122] Various embodiments can be described through the following clauses:

[0123] 1. A processor comprising:

[0124] one or more processing circuits to:

[0125] determine a change in a port state of a network connection;

[0126] in response to the change, updating one or more rules associated with a data path in response to the change in the network connection; and

[0127] causing the traffic to be transmitted based on the updated one or more rules.

[0128] 2. The processor of clause 1, wherein the one or more processing circuits are further to:

[0129] clone the one or more rules, wherein the update to the one or more rules is applied to the cloned one or more rules.

[0130] 3. The processor of clause 1, wherein the one or more processing circuits are further to:

[0131] determine that the change in the port state is associated with a first port failure;

[0132] select a second port; and

[0133] cause a port selector to change a physical connection from the first port to the second port.

[0134] 4. The processor of clause 3, wherein the one or more processing circuits are further to:

[0135] receive a confirmation that the network connection associated with the second port is active.

[0136] 5. The processor of clause 4, wherein the one or more rules are updated after the confirmation is received.

[0137] 6. The processor of clause 1, wherein the one or more processing circuits are further to:

[0138] update a connection table associated with the data path after the traffic is transmitted based on the updated one or more rules.

[0139] 7. The processor of clause 1, wherein the one or more processing circuits are associated with a network resource or a network interface controller.

[0140] 8. A network system comprising:

[0141] a network interface controller (NIC) having two or more ports; and

[0142] a controller comprising one or more processing circuits, the processing circuits to:

[0143] determining that a first state of a first port of the two or more ports has a threshold value;

[0144] establishing a connection with a network using a second port of the two or more ports; and

[0145] updating one or more rules for traffic associated with the NIC to use the second port to transmit data.

[0146] 9. The network system of clause 8, wherein the one or more rules are updated faster than a threshold period of time corresponding to a link outage time with the network.

[0147] 10. The network system of clause 8, wherein the controller is associated with firmware of the NIC.

[0148] 11. The network system of clause 8, wherein the one or more processing circuits are further to:

[0149] receive a confirmation that a second state of the second port of the two or more ports has a second threshold value.

[0150] 12. The network system of clause 8, wherein the one or more processing circuits are further to:

[0151] select the second port based on the one or more connection parameters.

[0152] 13. The network system of clause 8, wherein the one or more processing circuits are further to:

[0153] select a third port of the two or more ports before the second port;

[0154] determine that a connection with the network using the third port is unsuccessful; and

[0155] select the second port.

[0156] 14. The network system of clause 8, wherein the one or more processing circuits are further to:

[0157] determine that a subset of the one or more rules includes an identifier associated with the first port.

[0158] 15. The network system of clause 8, wherein the one or more processing circuits are further to:

[0159] determine a priority of a first rule of the one or more rules associated with the traffic; and

[0160] assigning a lower priority to the first rule in response to the first state having the threshold value.

[0161] 16. A computer-implemented method comprising:

[0162] determining that a network connection to a target port has been established;

[0163] identifying one or more rules associated with a previous port in a software- defined datapath;

[0164] generating one or more updated rules for the software-defined datapath that replace the previous port with the target port; and

[0165] causing transmission along the network connection in accordance with the one or more updated rules.

[0166] 17. The computer-implemented method of clause 16, wherein generating the one or more updated rules is a firmware operation associated with a network interface controller.

[0167] 18. The computer-implemented method of clause 16, further comprising:

[0168] deactivating the one or more rules; and

[0169] activating the one or more updated rules.

[0170] 19. The computer-implemented method of clause 18, wherein the one or more updated rules are cloned versions of the one or more rules.

[0171] 20. The computer-implemented method of clause 16, wherein the target port is selected by a port selector.

[0172] Other variations are within the spirit of the present disclosure. Thus, while the disclosed technology is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the disclosure to the specific form or forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the disclosure, as defined in the appended claims.

[0173] Unless otherwise indicated or contradicted by context, the use of the terms "a" and "an" and "the" and similar referents in the context of describing the disclosed embodiments (especially in the context of the following claims) are to be construed to cover both the singular and the plural, unless otherwise indicated or contradicted by context. The terms "comprising," "having," "including," and "containing" are to be construed as open-ended terms (meaning "including, but not limited to") unless otherwise noted or contradicted by context. The term "connected" (when used without modification) is to be construed as partly or wholly encompassed, attached to, or joined together, even if there are some intervening items. Unless otherwise indicated herein, a reference to a range of values herein is merely intended to serve as a shorthand method of referring individually to each separate value falling within the range, and each separate value is incorporated in the specification as if it were individually recited herein. Unless otherwise indicated or contradicted by context, the use of the term "subset" (e.g., "set of items") or "subcollection" is to be construed as a non-empty set of one or more members. In addition, unless otherwise indicated or contradicted by context, the term "subset" of a corresponding set does not necessarily mean a proper subset of the corresponding set, but rather the subset and the corresponding set can be equal.

[0174] Unless explicitly indicated otherwise or contradicted by context, conjunction language such as phrases in the form "at least one of A, B, and C" or "at least one of A, B, and C" is to be construed in context as generally used to mean that the item, term, etc. can be A or B or C, or any non-empty subset of the set of A and B and C. For example, in the illustrative example of a set having three members, the conjunction phrases "at least one of A, B, and C" and "at least one of A, B, and C" refer to any of the following sets: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Thus, such conjunction language is not generally intended to imply that certain embodiments require the existence of at least one of A, at least one of B, and at least one of C. In addition, unless otherwise indicated or contradicted by context, the term "plurality" denotes a plural state (e.g., "a plurality of items" denotes a plurality of items). The number of items in a plurality of items is at least two, but can be more if explicitly indicated or indicated by context. Furthermore, unless otherwise indicated or clear from context, the phrase "based on" means "based at least in part on" rather than "based only on."

[0175] The operations of a process described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. In at least one embodiment, a process, such as those described herein (or variations and / or combinations thereof) is performed under the control of one or more computer systems configured with executable instructions to perform the operations of the process, and the process is implemented as code (e.g., executable instructions, one or more computer programs or one or more applications) that is collectively executed by a hardware or combination of hardware and / or software. In at least one embodiment, the code is stored on a computer-readable storage medium, such as a computer program product, which is readable by a computer system including one or more processors. In at least one embodiment, a computer-readable storage medium is a non-transitory computer-readable storage medium that excludes transitory signals (e.g., a propagating transient electric or electromagnetic transmission) but includes non-transitory data storage circuitry (e.g., buffers, cache, and queues). In at least one embodiment, the code (e.g., executable instructions or source code) is stored on a set of one or more non-transitory computer-readable storage media (or other memory for storing executable instructions) having stored thereon executable instructions that, as a result of being executed by one or more processors of a computer system (i.e., as a result of being executed), cause the computer system to perform operations described herein. In at least one embodiment, a set of non-transitory computer-readable storage media includes multiple non-transitory computer-readable storage media, and one or more of the individual non-transitory storage media in the multiple non-transitory computer-readable storage media lack all of the code, with the multiple non-transitory computer-readable storage media collectively storing the entire code. In at least one embodiment, executable instructions are executed by different processors, e.g., a non-transitory computer-readable storage medium stores instructions and a main central processing unit (“CPU”) executes some instructions, while a graphics processing unit (“GPU”) executes other instructions. In at least one embodiment, different components of a computer system have separate processors and different processors execute different subsets of the instructions.

[0176] Accordingly, in at least one embodiment, a computer system is configured to implement one or more services that individually or collectively perform operations of processes described herein, and such a computer system is configured with applicable hardware and / or software to enable implementation of the operations. Moreover, a computer system implementing at least one embodiment of the present disclosure is a single device, and in another embodiment is a distributed computer system including multiple devices operating in different manners such that the distributed computer system performs operations described herein and such that a single device does not perform all of the operations.

[0177] The use of any and all examples, or exemplary language (e.g., "such as") provided herein, is intended merely to better illuminate embodiments of the disclosure and does not pose a limitation on the scope of the disclosure unless otherwise claimed. No language in the specification should be construed as indicating any non-claimed element as essential to the practice of the disclosure.

[0178] All references, including publications, patent applications, and patents, cited herein are hereby incorporated by reference to the same extent as if each reference were individually and specifically indicated to be incorporated by reference and were set forth in its entirety herein.

[0179] In the description and claims, the terms "coupled" and "connected," along with derivatives thereof, can be used. It should be understood that these terms are not intended as synonyms for each other. Rather, in particular embodiments, "connected" or "coupled" can be used to indicate that two or more elements are in direct or indirect physical or electrical contact with each other. "Coupled" can also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other.

[0180] Unless specifically stated otherwise, it can be appreciated that throughout the specification terms such as "processing," "computing," "calculating," "determining," or the like, refer to the action and / or processes of a computer or computing system, or similar electronic

[0181] In a similar manner, the term "processor" can refer to any device or portion of a device that processes electronic data from registers and / or memory to transform that electronic data into other electronic data that can be stored in registers and / or memory. As a non-limiting example, a "processor" can be a CPU or GPU. A "computing platform" can include one or more processors. As used herein, a "software" process can include, for example, software and / or hardware entities such as tasks, threads, and intelligent agents that perform work over time. Likewise, each process can refer to multiple processes to sequentially or concurrently execute instructions, either continuously or intermittently. The terms "system" and "method" can be used interchangeably herein so long as a system can embody one or more methods and a method can be considered a system.

[0182] In this document, obtaining, accessing, receiving, or inputting analog or digital data into a subsystem, computer system, or computer-implemented machine can be referenced. Analog and digital data can be obtained, accessed, received, or inputted in a variety of ways, such as by receiving data as a parameter of a function call or a call to an application programming interface. In some implementations, the process of obtaining, accessing, receiving, or inputting analog or digital data can be accomplished by transmitting data via a serial or parallel interface. In another implementation, the process of obtaining, accessing, receiving, or inputting analog or digital data can be accomplished by transmitting data from a providing entity to an accessing entity via a computer network. Providing, outputting, transmitting, sending, or presenting analog or digital data can also be referenced. In various examples, the process of providing, outputting, transmitting, sending, or presenting analog or digital data can be accomplished by transmitting data as an input or output parameter of a function call, a parameter of an application programming interface, or an interprocess communication mechanism.

[0183] Although the above discussion discloses example implementations of the described technology, other architectures can be utilized and are intended to fall within the scope of the present disclosure. Moreover, although a specific division of responsibilities has been defined above for purposes of discussion, various functions and responsibilities can be distributed and divided in different ways depending on circumstances.

[0184] Further, although the subject matter has been described in language specific to structural features and / or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as example forms of implementing the claims.

Claims

1. A processor comprising: one or more processing circuits to: determine a change in a port state of a network connection; update one or more rules associated with a data path for traffic associated with the network connection in accordance with the change; and cause the traffic to be transmitted based on the updated one or more rules.

2. The processor of claim 1, wherein, the one or more processing circuits are further to: clone the one or more rules, wherein the update to the one or more rules is applied to the cloned one or more rules.

3. The processor of claim 1, wherein, the one or more processing circuits are further to: determine that the change in the port state is associated with a first port failure; select a second port; and cause a port selector to change a physical connection from the first port to the second port.

4. The processor of claim 3, wherein, the one or more processing circuits are further to: receive a confirmation that the network connection associated with the second port is active.

5. The processor of claim 4, wherein, update the one or more rules after receiving the confirmation.

6. The processor of claim 1, wherein, the one or more processing circuits are further to: update a connection table associated with the data path after transmitting the traffic based on the updated one or more rules.

7. The processor of claim 1, wherein, the one or more processing circuits are associated with a network resource or a network interface controller.

8. A network system comprising: a network interface controller (NIC) having two or more ports; and a controller comprising one or more processing circuits to: determine that a first state of a first port of the two or more ports has a threshold value; establish a connection with a network using a second port of the two or more ports; and update one or more rules for traffic associated with the NIC to transmit data using the second port. the update to the one or more rules is faster than a threshold period of time corresponding to a link down time with the network.

9. The network system of claim 8, wherein, the controller is associated with firmware of the NIC.

10. The network system of claim 8, wherein, the one or more processing circuits are further to:

11. The network system of claim 8, wherein, receive a confirmation that a second state of the second port of the two or more ports has a second threshold value. the one or more processing circuits are further to:

12. The network system of claim 8, wherein, select the second port based on the one or more connection parameters. the one or more processing circuits are further to:

13. The network system of claim 8, wherein, select a third port of the two or more ports before the second port; determine that a connection with the network using the third port is unsuccessful; and select the second port. the one or more processing circuits are further to:

14. The network system of claim 8, wherein, determine that a subset of the one or more rules includes an identifier associated with the first port. the one or more processing circuits are further to:

15. The network system of claim 8, wherein, determine a priority of a first rule of the one or more rules associated with the traffic; and assign a lower priority to the first rule in response to the first state having the threshold value.

16. A computer-implemented method comprising: determining that a network connection with a target port has been established; identifying one or more rules associated with a previous port in a software defined data path; ​ generating one or more updated rules for the software-defined data path, replacing the previous port with the target port; and causing transmission along the network connection in accordance with the one or more updated rules.

17. The computer-implemented method of claim 16, wherein, Generating the one or more updated rules is a firmware operation associated with a network interface controller.

18. The computer-implemented method of claim 16, further comprising: deactivating the one or more rules; and activating the one or more updated rules.

19. The computer-implemented method of claim 18, wherein, The one or more updated rules are cloned versions of the one or more rules.

20. The computer-implemented method of claim 16, wherein, The target port is selected by a port selector.