Embodiments of the present invention generally relate to routing traffic in computing networks. More particularly, at least some embodiments of the invention relate to systems, hardware, software, computer-readable media, and methods for policy-based routing in software defined networks.
Routing in edge networks is complicated by the fact that edge networks often include low-powered devices with comparatively scarce resources at least because routing operations have high overhead. More specifically, many deployments of large-scale networks at the edge or in the cloud operate on standard TCP/IP routing protocols. While this routing model is compatible with legacy devices, this model produces substantial overhead, particularly for small packets which account for roughly 30% of all network traffic in some systems.
In a standard DNS query for example, a 76-byte packet consists of 16 bytes of payload data (the DNS query) and 60 bytes of standard TCP/IP/Ethernet header information. This means that 79% of the data travelling across network to fulfill this request is overhead that requires processing, often at each hop in the path. This overhead ratio can be even greater, as many applications frequently communicate using packet sizes of 64-70 bytes.
Further, the overhead associated with these packets increases in modern cloud and edge computing environments where containerized applications require end-to-end connectivity, which is generally provided through overlay networks and encapsulations.
Kubernetes, an example of a container orchestrator system, deploys an internal networking subsystem in order to enable seamless communications of applications in a cluster. This network subsystem is overlaid on top of the physical network infrastructure and relies on VXLAN (Virtual Extensible LAN) in many implementations in order to correctly route traffic between nodes.
VXLAN is an encapsulation protocol that encapsulates the payload traffic that is being communicated between nodes. This encapsulation requires an extra layer of TCP/IP headers in order to function (adding an extra 54 bytes). Consequently, an 8-byte communication between nodes requires 108-120 bytes of header data, an overhead ratio of over 93%.
This level of overhead, aside from being inefficient, can also cause congestion in edge networks, particularly where resources (e.g., 4G/5G/Wi-Fi) are scarce. The reason for the congestion is that an FCS (Frame Check Sequence) is always performed for each network packet transmitted and received. In addition to processing larger packets, a packet that contains errors (fails the FCS checksum) is discarded. Further, the likelihood of a network packet containing an error is directly proportional to the BER (Bit Error Rate) of the communications link. This means that larger packets are more likely to experience an error. This is concerning in wireless links, where BER levels can vary over time due to various different environmental factors.
The design of traditional TCP/IP packets also impacts the header overhead in relation to the packet processing rate of programmable switches (e.g., P4—Programming Protocol-Independent Packet Processor switches). For example, all packet headers are processed by the switch in sequence up to a desired match-action rule programmed by the user. For example, routing traffic based on a VXLAN ID requires parsing the preceding Ethernet, IP, and TCP headers before reaching the VXLAN header where the action is programmed to take place.
in a containerized edge environment where telemetry and network policies are defined at a granular microservice level, the overhead and computation cost can increase rapidly. The processing cost for incoming packets increases with the number of headers to parse. For example, if a network policy applies to UDP (User Datagram Protocol) traffic on a certain port, network, and transport layer headers will need to be parsed for each incoming packet. This results in high computational cost.
Furthermore, in a containerized environment, traffic belonging to a certain flow is generally identified using encapsulation techniques, such as VXLAN. This results in additional overhead in terms of packet and header sizes. In computing environments with scarce network resources, such overheads are undesirable.
Consequently, due to the complex and dynamic nature of containerized environments, network administration becomes challenging.
In order to describe the manner in which at least some of the advantages and features of the invention may be obtained, a more particular description of embodiments of the invention will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, embodiments of the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings, in which:
Embodiments of the present invention generally relate to packet routing in computing networks. More particularly, at least some embodiments of the invention relate to systems, hardware, software, computer-readable media, and methods for policy-based routing in software defined networks (SDN). SDNs that include programmable switches may incorporate complex user-defined policies directly into the forwarding rules and achieve better overall performance, better management, higher Qos, lower resource consumption, and ease of deployment.
By way of example, software defined networks or software defined networking may use logical controllers (e.g., software) or application programming interfaces (APIs) to communicate with switches including programmable switches. This allows the logical controllers to direct and configure packet traffic in a network such as an SDN.
As previously stated, traditional routing includes compute intensive operations that have substantial overhead. These operations and the associated overhead are reduced or unnecessary in embodiments of the invention. Edge networks, which may include telemetry systems, may require a granular approach with separate entries for each application or process (e.g., a pod or a container) based on custom labels and annotations. Traditional approaches are generally unable to provide such a granular view and additionally require computing resources to translate network tuples to pod labels/names.
Embodiments of the invention relate to a custom header to tag packets with unique identifiers, which may be based on traditional addresses or labeling schemes. These unique identifiers reduce the size of the header and may be used for routing packets in an SDN, a distributed SDN, and the like. Embodiments of the invention save compute resources, reduce overhead, improve telemetry and QoS (Quality of Service) implementations, and also improve the experience of developers. Packets are converted from/to standard form at ingress/egress points, making the process transparent to and compatible with other networks, network devices and hosts.
An SDN may be associated with nodes that are distributed across multiple clusters and packets transmitted from one pod to another pod or to an external network may traverse programmable switches. Multiple pods (e.g., applications, containers, or microservices) may be placed on the nodes. The SDN may be managed by a logically centralized SDN controller.
For an end-to-end solution, an SDN and its associated features can be extended inside a node using a smart NIC or a virtual programmable switch. Pods can then connect directly to this switch, allowing each communication to/from that pod to be managed and tracked by the corresponding policies.
In another example, embodiments of the invention may operate and incorporate traditional devices/components such as bridges. In this case, the telemetry and policies for pods communicating within a node many not directly be handled by the SDN controller. Embodiments of the invention, in these situations, may start at a first programmable hop in the SDN (e.g., the first programmable switch in the packet path).
The SDN controller configures the virtual and physical programmable switches in the SDN based on network policies defined by the administrators and platform users. An administrator can define policies based on IP ranges, source and/or destination IP addresses, source and/or destination pod name, custom labels or the like.
In one example, a database is provided that may maintain a list of pods and their metadata. A container orchestration system, such as Kubernetes, may use a flat IP allocation scheme where each pod receives a unique IP address. The database may use IP and MAC addresses as identifiers and record labels and policies corresponding to those addresses. Thus, the IP and MAC addresses are associated with labels and policies.
Embodiments of the invention may assign a unique identifier (UID) to each label, IP address, or MAC address. A UID can be assigned to a pod at the time of deployment, based on an ID provided by an orchestrator (e.g., Kubernetes). This may allow the pod to change its IP or the host the pod is running on while keeping the same UID. The SDN switches would be updated when a change in the pod configuration occurs. In embodiments of the invention, the UID may be used to recognize/route traffic from the pods within the SDN. The label may also be based on protocol type, IP ranges or port numbers. In addition, identifiers for traversing the external network are also stored. This also allows the SDN to return the packet to its default TCP/IP header configuration when egressing to an external network to maintain transparent compatibility or remain compatible with other network infrastructure.
Embodiments of the invention provide a mechanism that allows communication in computing networks while reducing overhead. Embodiments of the invention consider different types of communications that include least: (i) pods on the same node (intranode); (ii) pods on different nodes (intracluster); (iii) pods on different clusters (external); and (iv) pods with external networks (external). The fourth type, in one embodiment, is a subset of the third type of communication.
Embodiments of the invention further relate to routing packets in these communications in a manner that considers whether the path/route includes an ingress switch, an egress switch, ingress and egress switches, or neither ingress nor egress switches.
Embodiments of the invention reduce overhead by reducing the packet processing requirements and facilitating packet transmission. Depending on the communication type, a packet may be configured to include a label header to facilitate communication within the SDN. Adding a label header, which includes the identifiers of the source and of the target, can reduce parsing/processing requirements and forwarding operations can be performed more efficiently. Devices with limited computing resources can reduce or avoid congestion problems due to the reduced overhead.
In this example, programmable switches 104, 110, and 114 of the SDN 100 are controlled by a logical controller 108. The source 102 and the target 112 are part of the SDN 100 but may be in different clusters. The target 116 is outside or external to the SDN 100.
When the source 102 generates the packet 106a, the packet 106a may be generated in accordance with conventional TCP/IP protocols. When the packet 106a reaches the programmable switch 104, the packet 106a may be transformed or converted into a packet 106b when the target is the target 112, which is inside the SDN 100. More specifically, the packet 106a is transformed into the packet 106b. When the target 112 is inside the SDN 100, no further conversion of the packet 106b is required.
The packet 106a may be converted into the packet 106c when the target is the target 116. However, because the next hop in the path to the target 116 is the switch 114, which is inside the SDN 100, the packet 106b and the packet 106c have the same or similar structure. More specifically, packets may have one structure when being transmitted inside the SDN 100. Packets that ingress into the SDN 100 or egress out of the SDN 100 may be converted.
In this example, the switch 104 is an ingress switch because the packet is being transformed or converted into a simpler structure that is associated with less overhead. The conversion may include adding a label header and an ethernet type to the packet 106a to generate the packet 106b or the packet 106c. The label header may identify the source and the target by including the respective unique identifiers in the label header. Aspects of traditional TCP/IP packets can be removed, stored by the controller, left in the packet, or the like. The TCP/IP aspects not required for transmission inside the SDN 100 may be retained in some manner and restored when necessary.
The packet 106b, during routing, avoids overhead associated with conventional TCP/IP packets as the label header is used for forwarding purposes. More specifically, the ethernet type may indicate that that the packet can be routed using the label header, which may include an identifier (e.g., UID) of the source 102 and of the target 112. This substantially reduces overhead, particularly when the path includes multiple switches.
For example, if the target of the packet 106a is the target 112, the ingress switch 106 converts the packet 106a into a packet 106b which includes the label header. The packet 106b is received by the programmable switch 110 and delivered to the target 112, which is part of the SDN 100. In this example, an egress switch is not needed or traversed at least because the target 112 is part of the SDN 100.
In another example, the target of the packet 106a is the target 116, which is outside of or external to the SDN 100. In this example, the ingress switch 104 converts the packet 106a to the packet 106c as previously described. When the packet arrives at the switch 114, which is an egress switch in this example, the packet 106c is converted or transformed into the packet 106d (which includes the packet information included in the packet 106a). More specifically, the label header may be removed and the conventional TCP/IP information may be returned to the packet 106d such that the packet 106d can be transmitted to the target 116 and such that the packet 106d is compatible with the external network. The controller 108 may perform packet conversion or packet configuration at ingress and egress switches. Stated differently, the switches may be configured to recognize and convert relevant packets.
More generally, packets may be solely routed within an SDN. Packets may also enter/leave and SDN.
The node 212 includes pods 202 and 204 and a virtual switch 206. The node 220 includes pods 214 and 216 and a virtual switch 218. The node 222 includes pods 224 and 226 and a SmartNIC (smart Network Interface Card) 228, which may operate as a switch. The node 238 includes pods 234 and 236 and a bridge 232. The environment may also include other switches, such as switches 208, 210, 230, and 250.
The data plane links, control plane links, and logical links between controllers are shown using different line types as defined in the legend 244. A control plane 248 is associated with controllers 244 and 246, which may each be associated with different switches as illustrated in
Thus, the environment 200 includes multiple nodes 212, 220, 222, and 238 that are distributed across multiple clusters. The switches 206, 208, 210, 218, 228, 230, and 250 are, in this example, programmable switches.
The pods shown in
In
More specifically, in an orchestration environment, such as Kubernetes, each pod receives a unique IP address (as illustrated in
Thus, the IP and MAC addresses may be used as identifiers 304. Labels 306 and policies 308 corresponding to those identifiers 304 can be stored in the database 312. Embodiments of the invention may further store unique identifiers (UID) 310, which can be assigned, by way of example, based on labels 306 or identifiers 304. The labels 306 may also be based on protocol type, IP ranges, port numbers and/or a container identifier This allows packets to be transmitted in the context of specific identifiers or labels, which may pertain to one or more pods.
The UIDs 310 may be used to recognize the traffic of a pod within a managed network such as an SDN. In addition, identifiers for traversing an external network may also be stored. These identifiers may include VXLAN tags or UDP ports.
The label header 406 includes two fields in one example: a source UID 418 and a destination UID 420. The source UID 418 is used to identify the source (e.g., the source pod) of the packet or traffic. The destination UID 420 may be used to identify the target (e.g., the target pod) of the packet or traffic.
As previously stated, the controller may assign a UID to each entry in its database (e.g., each pod or communication or identifier such as IP address or MAC address). The size of the UID can be configured based on the size and requirements of a network. A 3 byte UID can represent 16.7 million pods (281.4 trillion communication channels/combinations and should be sufficient for many networks. As a result, the size of the label header 406 may be 6 bytes. In comparison, VXLAN adds an encapsulation overhead of 54 bytes.
Embodiments of the invention may also set an ethernet type 416 to a predetermined value (e.g., 0×0808 or other unused value) to indicate that the traffic is labeled as optimized UID traffic and includes a label header. The ethernet type 416 allows labelled traffic to be identified quickly and efficiently at programmable switches because only the ethernet header 404 (the first layer to parse) needs to be parsed. Discovering the ethernet type 416 allows the switch to identify the label header 406 and further parsing may be unnecessary and the source and target identifiers can be used for routing purposes. In contrast, other encapsulation techniques require additional processing because the identifying parameters are buried in deeper layers and, consequently, require additional processing and higher overhead. Determining, from the ethernet header 404, that the packet 400 is labeled allows the packet 400 to be processed with much less overhead.
Initially, a source may want to communicate with a target. Thus, the source acquires 502 the IP address or MAC address of the target. This may be achieved by querying a DNS service. If the target is inside the SDN, the source may determine the MAC address using, for example, address resolution protocol (ARP). Once the IP and/or MAC address is determined, the source may send out or forward 504 the packet or packets using the IP or MAC address acquire to the gateway or to the next hop in the path. If the target is outside of the SDN and/or the MAC cannot be determined, the source sends out the packets directly using, for example, the IP address. This process of routing as disclosed herein, which includes a label header for optimized UID routing, may be transparent to the source and destination application. The source and destination applications send/receive their data using the standard TCP/IP model (or other protocol) and are not aware of the actions performed by the programmable switches in the SDN.
In both cases, the packets may be sent to an initial gateway (e.g., an example of a programmable switch). In this example, the initial gateway may be the first programmable switch in the path. In another example and with reference to
The method 500 of configuring the network may include generating and inserting the label header into the packets being transmitted. The label header may include the source UID and destination UID. The method 500 thus configures the network (e.g., the switches) such that traffic (e.g., from a pod) can be recognized and routed appropriately to the target.
At the egress switch, flow entries are added 606. The flow entries at the egress switch cause the egress switch to remove the label header and replace the removed label header with the network provider's mechanism to identify inter-network traffic (e.g., VXLAN or NAT). Forwarding entries may also be added 608 based on the computed path. Meters may be added if necessary.
The other switches in the path may be configured 610 and include the proper flow entries such that the recognized packets are transmitted along the path that has been configured. The controller may also connect with telemetry and monitoring systems and reconfigure the network if requested.
Embodiments of the invention include headers that allow packet flows to be uniquely identified and that allow policies to be applied with reduced overhead. Embodiments of the invention reduce overhead, including on edge network devices, in various types of networks including SDNs and in containerized environments such as Kubernetes environments. Overhead is reduced, in one example, using a packet structure that includes a packet structure that can reduce processing requirements and which may be smaller than conventional TCP/IP packets or VXLAN packets. Thus, processing operations, which may include parsing operations, are reduced and an advantage is obtained compared to traditional networking:
The reduced header size for small transmission applications (e.g., DNS queries) can greatly improve the ratio of payload to header bytes, from 32 bytes (example payload)+108 bytes (VXLAN headers) to the minimum Ethernet frame size of 64 bytes. This reduces the packet overhead ratio from 70% in this example to 50%. This overhead could be further reduced by eliminating the 64-byte minimum frame size, which is possible in a fully programmable network.
Reducing the average packet size across all packets due to reduced header sizes has a direct and linear impact on both the packet processing rate of a programmable network switch (as all switches are required to parse all header bits up to the programmed action), and also improves the reliability of the network. For example, errors are often related to a bit error rate and reduced packet sizes experience fewer errors.
Simplifying the header structure also provides an improvement to the overall usability and ease of programmability of SDN network infrastructure, as flow match actions can be defined with fewer lines of code, and may not require typical network actions (e.g., decrement IPV4 TTL and recalculate checksum) while transiting the network. Using SDN and programmable switches to provide a comprehensive policy and telemetry solution that is not just limited to IP:port tuples but can incorporate user-defined labels and annotations while maintaining a line rate delivery on data plane is disclosed.
An extra feature provided by programmable SDN infrastructure is the ability to provide in-band network telemetry (INT). INT can provide many important network telemetry metrics such as throughput, latency, packet size and many more variables on a per-flow basis. This feature can pair seamlessly with the UID functionality as disclosed herein. By combining the UID with the telemetry gathered from INT, a new level of visibility, granularity, and control of network traffic can be achieved.
This increased level of network control can have direct and tangible benefits to both infrastructure providers and end-users, who will likely have network Quality of Service (Qos) agreements and policies. The increased level of network control and visibility on a per-flow, per-service, and per-customer basis enables the definition and automation of very robust Qos policies, which can autonomously be monitored at a greater depth and can enable more advanced network control actions than previously possible.
An example of such an action is the autonomous movement of workloads (e.g., Kubernetes workloads) across the network to reduce the latency for an application by moving the application closer to the data source at the edge. This is now due to the SDN controller and overall system, which is capable of monitoring: a workload's in-band network telemetry UID header values; and path/hops through the network egress point to third party network. These variables cannot be acquired in standard systems.
Another aspect of embodiments of the invention is the method of collecting and processing application packets as they exit the networking subsystem and transit the physical network infrastructure. In one example, a software switch (e.g., a P4 switch) located within the host device, logically located between the networking subsystem and the host device's physical Ethernet stack may be used to collect and process application packets. In another example, a programmable smart Network Interface Card (smartNIC) may directly interface between the networking subsystem and the physical network hardware. More specifically, the SmartNIC can interface directly between the container application networking subsystem and the physical network infrastructure.
Both of these examples perform the same task of processing packet headers as they egress from the network environment. Overhead is reduced, for example, because the VXLAN encapsulation is removed and the label header, which includes the UIDs, is attached.
Embodiments of the invention maintain compatibility with traditional TCP/IP networks because the SDN controller is aware of the network egress points and service flow paths. This allows a UID-header packet to be re-assembled with the traditional TCP/IP header format if the packet egresses from the network. It is also possible to use embodiments of the invention across edge networks (e.g., SDN clusters) separated by third-party infrastructure. A network packet with a given UID can transit from one edge cluster to another cluster over a third-party network and be re-assembled with the label header on the other side. The SDN controller is aware of all TCP/IP information between the devices the SDN controller controls and the UID can be recalled from the TCP/IP information on the packet acquired during ingestion after transiting the third-party network.
The packet is used by the controller to determine 704 a path for the packet to the target and to determine a communication type. Example communication types include intranode communications, intracluster communications, and external communications.
Once the path is determined and the communication type determined, flow entries are configured 706 based on the path and the communication type. The network is then configured 708. This may include setting flow entries at each hop in the path determined by the controller. The flow entries at ingress and egress points may differ from flow entries at other points. For example, an ethernet type may be changed and label header may be added an ingress points. The ethernet type is also changed back and the label header is at egress points. Further traditional header information removed at ingress points may be re-inserted at egress points.
The following examples illustrate different types of communications and policy-based routing operations and refer to
In one example, the pod 202 wants to communicate with the pod 204 using port 80. The pod 202 performs a DNS query and determines the IP address, followed by the MAC address of the pod 204 using ARP and starts sending IP packets. In one example, both types of traffic were preconfigured to be allows for the pod 202 by the SDN controller. The virtual switch 206 forwards an initial packet to the controller 244 because the virtual switch 206 does not know how to process the packets at this stage (unless the path was previously configured). The controller 244 receives the packet and determines that a policy is applicable. The policy, for example, may require tracking traffic on port 80. The controller 244 may also determine that the pod 202 and the pod 204 are connected to the same switch 206.
Because the pods 202 and 204 are connected to the same switch 206, the flow entries of the switch 206 do not include adding label headers. Rather, only forwarding flow entries are added. In this communication type (intranode), the flow entries include: Forward packets coming from pod 202 (10.0.1.1) port 80 and destined for pod 204 (10.0.1.2) to port 2 (assuming that pod 204 is connected with port 2). In one example, the flow entries may also be set to DROP the packets in case a policy restricts communication between the two pods. Periodic or on-demand reporting can be set up for the flow entries based on telemetry requirements. Once the network is configured, subsequent packets transmitted by the pod 202 and recognizes as being from the pod 202 port 80 to the pod 204 are recognized by the switch and are forwarded to the pod 204 without intervention by the controller 244 because the switch 206 will find a match in the flow entries for this type of traffic.
The next example relates to communications between pods on different nodes (intracluster). In this example, the pod 202 wants to communicate with the pod 216. The pod 202 performs a query operation and determines the MAC address of the pod 216 using ARP and starts sending IP packets. In this example both IP/MAC addresses are in the same network. If an IP Address Management (IPAM) module in-use configures these addresses to be separate networks, the traffic will still be sent to the default gateway which in this example is the switch 206. The switch 206 forwards the new traffic to the controller 244 in either case.
In this example, the controller 244 receives the packet and determines that there is a policy to restrict bandwidth to a certain value for all IP traffic between the pods 202 and 216. The controller 244 also computes the forwarding path to include the switch 206, the switch 208, and the switch 218.
These switches are configured with the following flow entries. At the switch 206 (the ingress switch), the flow entries include modifying the label header of the ethernet frames from type 0×0800 to 0×0808 to specify it is no longer an IPV4 routed packet, and is now a UID routed packet coming from the pod 202 (identified by its MAC address and/or other parameters (IP, TCP/UDP port, VXLAN ID, etc.)) and destined for the pod 216. A new label header is then inserted which includes UIDs of the two pods 202 and 216 based on traffic type IP and/or the IP addresses of the pods (e.g., from the database 312) or based on a set of unique values decided upon by the controller. The IP address, TCP/UDP Information, and VXLAN encapsulation can be removed and saved by the controller to reduce overall packet size. This traffic is forwarded to the port connected to the switch 208.
At the switch 208, ethernet frames of type 0×0808 (packets with label headers) with the corresponding UIDs are forwarded to the port connected to the switch 218.
At the switch 218, the label header for packets of ethernet type 0×0808 and corresponding UIDs are removed. The ethernet type is set to 0×0800 (IPv4) and any TCP/IP or VXLAN header information removed from the packet during transit is re-inserted. The traffic is then forwarded to the pod 216. If necessary, a meter for the corresponding entries on these switches 206, 208, and 218 is added with the bandwidth set by the policy.
The next example illustrates communications between pods on different clusters (external). In this example, the pod 202 wants to communicate with the pod 226. The pod 202 determines the MAC address of the pod 226 using ARP and starts sending the IP packets. The controller 244 may receive the initial packet and may find a policy indicating that the pod 226 will only communicate with pods from the cluster 240 if their role is set to “admin”. These details may be set using labels and annotations and the information will be available to the controller 244 using the database 312.
A UID will be created for communications from cluster 240 with an “admin” role. Another UID will be created for the pod 226. In this example, the path chosen or set by the controller 244 includes switches 206, switch 210, switch 230 and switch (or SmartNIC) 228.
The following entries are configured. At the switch 206, a label header is added to frames of type 0×0800 coming from the pod 202 and destined for the pod 226. In this example, the pod 202 generates standard traffic (e.g., IPv4), which includes an ethernet type (e.g., 0x0800). The ethernet type is changed to 0×0808 at the switch 206. Source and destination UIDs are set in the label header and the ethernet type is set to 0×0808. This traffic is then forwarded to the port connected to the switch 210. The policy is also enforced.
In this example, the switch 210 is an egress switch as the packets will be transmitted over an external network 260. Thus, at the switch 210, the label header for frames of Ethernet type 0×0808 with the corresponding UIDs are removed and the Ethernet type is set to 0×0800 to make the packet a standard packet (e.g., IPv4 packet). The source and destination IP addresses and UDP port numbers (assuming that NAT is used) are set and the traffic is sent to the switch 230 over the external network 260. IN one example, the sites may be connected using a virtual private network (VPN) such that ARP functions properly. However, a similar result would be achieved using DNS and IPV4 routing rather than ARP and MAC routing.
At the switch 230, which becomes an ingress switch, the ethernet frame type is changed and a label header is added. Thus, for ethernet frames of type 0×0800 coming from the pod 202 (identified by the source IP:port tuple) and destined for the pod 226 (identified by the destination IP:port tuple), the ethernet frame type is changed and the label header is added. More specifically, at the switch 230, source and destination UIDs are set and the ethernet type is changed to 0×0808. This traffic is then forwarded to the port connected to the switch 228.
At the switch 228, the label header for frames of Ethernet type 0×0808 with the corresponding UIDs is removed and the ethernet type is set to 0×0800. Traffic of this type is forwarded to the port connected to the pod 226. Thus, packets transmitted by the pod 202 will be delivered to the pod 226 on a line rate. To explicitly drop any non-admin role packets, the flow entries can be configured to drop any other IP traffic originating from the cluster 240 and destined for the pod 226 using the policy.
These examples illustrate how the network and flow entries are configures and prepared. Once the switches in the path are configured, packets may flow.
The following is a discussion of aspects of example operating environments for various embodiments of the invention. This discussion is not intended to limit the scope of the invention, or the applicability of the embodiments, in any way.
In general, embodiments of the invention may be implemented in connection with systems, software, and components, that individually and/or collectively implement, and/or cause the implementation of, packet operations, routing operations, packet amendment operations, header operations, network configuration operations, forwarding operations, or the like or combinations thereof. More generally, the scope of the invention embraces any operating environment in which the disclosed concepts may be useful.
New and/or modified data collected and/or generated in connection with some embodiments, may be stored in a computing environment that may take the form of a public or private cloud storage environment, an on-premises storage environment, and hybrid storage environments that include public and private elements. Any of these example storage environments, may be partly, or completely, virtualized. The storage environment may comprise, or consist of, a datacenter which is operable to perform operations, services, or the like initiated by one or more clients or other elements of the operating environment.
Example cloud computing environments, which may or may not be public, include storage environments that may provide data protection functionality for one or more clients, which may include pods. Another example of a cloud computing environment is one in which processing, data protection, and other, services may be performed on behalf of one or more clients. Some example cloud computing environments in connection with which embodiments of the invention may be employed include, but are not limited to, Microsoft Azure, Amazon AWS, Dell EMC Cloud Storage Services, and Google Cloud. More generally however, the scope of the invention is not limited to employment of any particular type or implementation of cloud computing environment.
In addition to the cloud environment, the operating environment may also include one or more clients that are capable of collecting, modifying, and creating, data. As such, a particular client may employ, or otherwise be associated with, one or more instances of each of one or more applications that perform such operations with respect to data. Such clients may comprise physical machines, containers, or virtual machines (VMs).
Particularly, devices in the operating environment may take the form of software, physical machines, containers, or VMs, or any combination of these, though no particular device implementation or configuration is required for any embodiment. Similarly, data storage components such as databases, storage servers, storage volumes (LUNs), storage disks, for example, may likewise take the form of software, physical machines, containers, or virtual machines (VM), though no particular component implementation is required for any embodiment.
Example embodiments of the invention are applicable to any system capable of storing and handling various types of objects or data, in analog, digital, or other form.
It is noted that any operation(s) of any of these methods, may be performed in response to, as a result of, and/or, based upon, the performance of any preceding operation(s). Correspondingly, performance of one or more operations, for example, may be a predicate or trigger to subsequent performance of one or more additional operations. Thus, for example, the various operations that may make up a method may be linked together or otherwise associated with each other by way of relations such as the examples just noted. Finally, and while it is not required, the individual operations that make up the various example methods disclosed herein are, in some embodiments, performed in the specific sequence recited in those examples. In other embodiments, the individual operations that make up a disclosed method may be performed in a sequence other than the specific sequence recited.
Following are some further example embodiments of the invention. These are presented only by way of example and are not intended to limit the scope of the invention in any way.
Embodiment 1. A method comprising: receiving a packet, at a controller, wherein the packet is generated at a pod and is destined for a target, and wherein the pod is included in a software defined network, a type of communication for the packet and a path for the packet to the target, configuring flow entries for the packet based on the type of communication for each switch in the path controlled by the controller, and configuring packets received at a gateway switch according to the flow entries and forwarding the packets according to the flow entries associated with the gateway.
Embodiment 2. The method of embodiment 1, further comprising receiving the packet at the gateway switch, wherein the gateway is configured to forward the packet to the controller when no flow entries are present at the gateway and wherein the gateway is an ingress switch.
Embodiment 3. The method of embodiment 1 and/or 2, wherein the gateway switch comprises a programmable switch, a virtual programmable switch, or a SmartNIC.
Embodiment 4. The method of embodiment 1, 2, and/or 3, where the type of communication is intranode when the controller determines that the pod and the target are on a same node, further comprising: applying any existing policies setting forwarding entries at the gateway switch that include forwarding packets coming from the pod to the target without changing the packets.
Embodiment 5. The method of embodiment 1, 2, 3, and/or 4, further comprising dropping the packets when a policy restricts communications between the pod and the target.
Embodiment 6. The method of embodiment 1, 2, 3, 4, and/or 5, wherein the type of communication is intracluster when the controller determines that the pod and the target are on different nodes in a same cluster, further comprising: applying any existing policies, and setting forwarding entries at the gateway that include: adding a label header to packets at the gateway switch coming from the pod and destined for the target, wherein the pod and the target are identified by their MAC addresses, wherein the label header includes a first identifier for the pod and a second identifier for the target, changing an ethernet type to the packets at the gateway, and forwarding the packets to a next switch in the path.
Embodiment 7. The method of embodiment 1, 2, 3, 4, 5, and/or 6, further comprising setting forwarding entries at the next switch that include forwarding packets of the ethernet type and having the first and second identifiers to a next hop in the path.
Embodiment 8. The method of embodiment 1, 2, 3, 4, 5, 6, and/or 7, wherein the next switch is an egress switch, further comprising setting forwarding entries that include removing the label header for packets of the ethernet frame type and including the first and second identifiers, changing the ethernet frame type and forwarding the packets to the target.
Embodiment 9. The method of embodiment 1, 2, 3, 4, 5, 6, 7, and/or 8, further comprising adding a meter for the forwarding entries.
Embodiment 10. The method of embodiment 1, 2, 3, 4, 5, 6, 7. 8. and/or 9, wherein the path includes an external network and the type of communication is external, further comprising setting forwarding entries by: at the gateway switch: adding a label header to packets coming from the pod and destined for the target, wherein the label includes a first identifier of the pod and a second identifier of the target, and changing an ethernet type, and forwarding the packets according to the path; at an egress switch: removing the label header and changing the ethernet type, setting IP addresses for the pod and the target, at a second ingress switch: adding a new label header, changing the ethernet type, and forwarding the packets to a final switch, and at the final switch: removing the label header and changing the ethernet type.
Embodiment 11. A system, comprising hardware and/or software, operable to perform any of the operations, methods, or processes, or any portion of any of these, disclosed herein.
Embodiment 12. A non-transitory storage medium having stored therein instructions that are executable by one or more hardware processors to perform operations comprising the operations of any one or more of embodiments 1-10.
The embodiments disclosed herein may include the use of a special purpose or general-purpose computer including various computer hardware or software modules, as discussed in greater detail below. A computer may include a processor and computer storage media carrying instructions that, when executed by the processor and/or caused to be executed by the processor, perform any one or more of the methods disclosed herein, or any part(s) of any method disclosed.
As indicated above, embodiments within the scope of the present invention also include computer storage media, which are physical media for carrying or having computer-executable instructions or data structures stored thereon. Such computer storage media may be any available physical media that may be accessed by a general purpose or special purpose computer.
By way of example, and not limitation, such computer storage media may comprise hardware storage such as solid state disk/device (SSD), RAM, ROM, EEPROM, CD-ROM, flash memory, phase-change memory (“PCM”), or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other hardware storage devices which may be used to store program code in the form of computer-executable instructions or data structures, which may be accessed and executed by a general-purpose or special-purpose computer system to implement the disclosed functionality of the invention. Combinations of the above should also be included within the scope of computer storage media. Such media are also examples of non-transitory storage media, and non-transitory storage media also embraces cloud-based storage systems and structures, although the scope of the invention is not limited to these examples of non-transitory storage media.
Computer-executable instructions comprise, for example, instructions and data which, when executed, cause a general-purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. As such, some embodiments of the invention may be downloadable to one or more systems or devices, for example, from a website, mesh topology, or other source. As well, the scope of the invention embraces any hardware system or device that comprises an instance of an application that comprises the disclosed executable instructions.
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 above. Rather, the specific features and acts disclosed herein are disclosed as example forms of implementing the claims.
As used herein, the term module, client, agent, engine, component, service, or the like may refer to software objects or routines that execute on the computing system. The different components, modules, engines, and services described herein may be implemented as objects or processes that execute on the computing system, for example, as separate threads. While the system and methods described herein may be implemented in software, implementations in hardware or a combination of software and hardware are also possible and contemplated. In the present disclosure, a ‘computing entity’ may be any computing system as previously defined herein, or any module or combination of modules running on a computing system.
In at least some instances, a hardware processor is provided that is operable to carry out executable instructions for performing a method or process, such as the methods and processes disclosed herein. The hardware processor may or may not comprise an element of other hardware, such as the computing devices and systems disclosed herein.
In terms of computing environments, embodiments of the invention may be performed in client-server environments, whether network or local environments, or in any other suitable environment. Suitable operating environments for at least some embodiments of the invention include cloud computing environments where one or more of a client, server, or other machine may reside and operate in a cloud environment.
With reference briefly now to
In the example of
Such executable instructions may take various forms including, for example, instructions executable to perform any method or portion thereof disclosed herein, and/or executable by/at any of a storage site, whether on-premises at an enterprise, or a cloud computing site, client, datacenter, data protection site including a cloud storage site, or backup server, to perform any of the functions disclosed herein. As well, such instructions may be executable to perform any of the other operations and methods, and any portions thereof, disclosed herein. The device 800 may also represent a computing system, such as an edge environment, a cloud-based environment or the like and may be representative of multiple devices, such as nodes in one or more clusters.
The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.