Legal claims defining the scope of protection. Each claim is shown in both the original legal language and a plain English translation.
1. A method comprising: modifying a forwarding table in a network virtualization edge (NVE) in a software defined network (SDN), to indicate that a next hop for a packet having a destination address of a load-balancer instance is to be resolved by the load-balancer instance, the modified forwarding table including a first entry indicating that the destination address is a virtual address of the load-balancer instance and a second entry including a load balancer state identifier associated with the load-balancer instance, the load balancer state identifier further associated with one or more entries of a load-balancer instance table, the load balancer state identifier identifying one of three possible states of the load-balancer instance, wherein the three possible states comprise a normal state, a pre state, and a chg state, a state of the load-balancer instance identified by the load balancer state identifier changeable from one of the three possible states to another of the three possible states when an entry in the load-balancer instance table is updated, when a valid affinity between the packet and a second real server exists according to an entry in a session table, and when an age of the affinity exceeds the age threshold; forwarding, using the modified forwarding table, the packet through an underlay of the SDN such that the packet tunnels from the NVE to a second NVE, the second NVE hosting a first real server managed by the load-balancer instance.
2. The method of claim 1 , further comprising: determining whether a valid affinity between the packet and a second real server exists according to an entry in a session table; and replacing the first real server with the second real server in the forwarding such that the forwarding actually forwards the packet to a third NVE that hosts the second real server.
This invention relates to network virtualization and load balancing in data centers. The problem addressed is efficiently routing network packets to appropriate virtualized servers while maintaining session persistence, ensuring that packets from the same session are consistently directed to the same server or an appropriate alternative when necessary. The method involves forwarding a network packet from a first Network Virtualization Endpoint (NVE) to a second NVE that hosts a first real server. The forwarding decision is based on a session table that tracks server affinities, which are associations between sessions and servers. The method further includes determining whether a valid affinity exists between the packet and a second real server by checking the session table. If such an affinity is found, the first real server is replaced with the second real server in the forwarding process, ensuring the packet is redirected to a third NVE that hosts the second real server. This approach enhances load balancing and session persistence in virtualized environments by dynamically adjusting server assignments based on session data. The system ensures that packets from the same session are consistently routed to the correct server, improving reliability and performance in distributed computing environments.
3. The method of claim 2 , further comprising: adding a session entry in the session table, the session entry being indicative of an existing affinity between a session and the second real server, the packet being from the session; setting an age threshold for the session entry, wherein no packets received from the session within the age threshold causes the age of the session entry to age to exceed the age threshold, and wherein the affinity is valid when an age of the affinity has not exceeded the age threshold.
This invention relates to load balancing systems that manage network traffic distribution across multiple real servers. The problem addressed is maintaining session affinity, where network sessions should consistently be routed to the same server to ensure proper functionality, while also handling session expiration to free up resources when sessions become inactive. The method involves tracking session affinity in a session table, where each entry represents a relationship between a network session and a specific real server. When a packet from a session is received, a new session entry is added to the table, indicating the affinity between that session and the assigned server. An age threshold is set for each entry, which determines how long the affinity remains valid. If no packets are received from the session within this threshold, the entry ages out, and the affinity is no longer valid. This ensures that inactive sessions do not indefinitely consume resources while maintaining affinity for active sessions. The method also includes mechanisms to update the age of session entries when new packets are received, ensuring accurate tracking of session activity. By dynamically managing session affinity and expiration, the system efficiently balances load while preserving session consistency for active connections.
4. The method of claim 1 , wherein the forwarding avoids the packet reaching an intermediate NVE in the SDN.
A method for optimizing packet forwarding in a Software-Defined Networking (SDN) environment addresses the inefficiency of traditional packet routing, where packets often traverse unnecessary intermediate Network Virtualization Edges (NVEs). The method involves dynamically determining an optimal forwarding path for packets to bypass intermediate NVEs, reducing latency and improving network performance. This is achieved by analyzing network topology and traffic patterns to identify direct or more efficient routes between source and destination NVEs. The method may include techniques such as path computation, flow rule installation, and real-time traffic monitoring to ensure packets are forwarded directly or through fewer hops. By avoiding intermediate NVEs, the method minimizes processing overhead and reduces the risk of bottlenecks or congestion in the network. The solution is particularly useful in large-scale SDN deployments where minimizing packet traversal distance is critical for maintaining low latency and high throughput. The method may also integrate with existing SDN controllers to dynamically adjust forwarding rules based on network conditions, ensuring continuous optimization of packet paths.
5. The method of claim 1 , further comprising: hashing the portion of the packet, as a part of determining the value; and selecting an entry from a plurality of entries in the load-balancer instance table, the entry providing a singular next hop to the first real server, and each entry in the plurality of entries in the load-balancer instance table corresponding to a distinct real server in a pool of real servers managed by the load-balancer instance.
6. The method of claim 1 , wherein the NVE forwarding table includes a next hop address for a second destination address contained in a second packet.
7. The method of claim 1 , further comprising: associating with the load-balancer instance the virtual address, the virtual address being a valid destination address only within the NVE, and the virtual address being usable by a virtual machine coupled with the NVE.
8. The method of claim 1 , further comprising: constructing an application programming interface (API) in a controller of the SDN, the API causing an instantiation of the load-balancer instance in the NVE.
9. The method of claim 1 , further comprising: constructing an application programming interface (API) in a controller of the SDN, the API causing a deletion of the load-balancer instance in the NVE.
10. The method of claim 1 , further comprising: constructing an application programming interface (API) in a controller of the SDN, the API causing an addition of a real server to a load-balanced pool of the load-balancer instance in the NVE.
In the field of software-defined networking (SDN), managing and scaling network resources dynamically is a critical challenge. Traditional load-balancing solutions often lack flexibility, requiring manual configuration or complex scripting to adjust server pools. This invention addresses the need for automated, programmable control over load-balancer configurations within a network virtualization edge (NVE) environment. The method involves constructing an application programming interface (API) within an SDN controller. This API enables the dynamic addition of real servers to a load-balanced pool associated with a load-balancer instance in the NVE. The API provides a standardized interface for integrating new servers into the load-balancing system, allowing for seamless scaling and reconfiguration without manual intervention. The controller, acting as the central management point, orchestrates these changes across the network, ensuring consistent and efficient distribution of traffic. This approach enhances automation, reduces operational overhead, and improves adaptability in dynamic network environments. The solution is particularly useful in cloud computing and virtualized data centers where rapid scaling and resource allocation are essential.
11. The method of claim 1 , further comprising: constructing an application programming interface (API) in a controller of the SDN, the API causing a removal of a real server from a load-balanced pool of the load-balancer instance in the NVE.
12. A computer usable program product comprising one or more computer-readable storage devices, and program instructions stored on at least one of the one or more storage devices, the stored program instructions comprising: program instructions to modify a forwarding table in a network virtualization edge (NVE) in a software defined network (SDN), to indicate that a next hop for a packet having a destination address of a load-balancer instance is to be resolved by the load-balancer instance, the modified forwarding table including a first entry indicating that the destination address is a virtual address of the load-balancer instance and a second entry including a load balancer state identifier associated with the load-balancer instance, the load balancer state identifier further associated with one or more entries of a load-balancer instance table, the load balancer state identifier identifying one of three possible states of the load-balancer instance, wherein the three possible states comprise a normal state, a pre state, and a chg state, a state of the load-balancer instance identified by the load balancer state identifier changeable from one of the three possible states to another of the three possible states when an entry in the load-balancer instance table is updated, when a valid affinity between the packet and a second real server exists according to an entry in a session table, and when an age of the affinity exceeds the age threshold; program instructions to forward, using the modified forwarding table, the packet through an underlay of the SDN such that the packet tunnels from the NVE to a second NVE, the second NVE hosting a first real server managed by the load-balancer instance.
13. The computer usable program product of claim 12 , further comprising: program instructions to determine whether a valid affinity between the packet and a second real server exists according to an entry in a session table; and program instructions to replace the first real server with the second real server in the forwarding such that the forwarding actually forwards the packet to a third NVE that hosts the second real server.
14. The computer usable program product of claim 13 , further comprising: program instructions to add a session entry in the session table, the session entry being indicative of an existing affinity between a session and the second real server, the packet being from the session; program instructions to set an age threshold for the session entry, wherein no packets received from the session within the age threshold causes the age of the session entry to age to exceed the age threshold, and wherein the affinity is valid when an age of the affinity has not exceeded the age threshold.
15. The computer usable program product of claim 12 , wherein the program instructions to forward avoids the packet reaching an intermediate NVE in the SDN.
16. The computer usable program product of claim 12 , further comprising: program instructions to hash the portion of the packet, as a part of determining the value; and program instructions to select an entry from a plurality of entries in the load-balancer instance table, the entry providing a singular next hop to the first real server, and each entry in the plurality of entries in the load-balancer instance table corresponding to a distinct real server in a pool of real servers managed by the load-balancer instance.
17. The computer usable program product of claim 12 , wherein the NVE forwarding table includes a next hop address for a second destination address contained in a second packet.
18. The computer usable program product of claim 12 , wherein the computer usable code is stored in a computer readable storage device in a data processing system, and wherein the computer usable code is transferred over a network from a remote data processing system.
19. The computer usable program product of claim 12 , wherein the computer usable code is stored in a computer readable storage device in a server data processing system, and wherein the computer usable code is downloaded over a network to a remote data processing system for use in a computer readable storage device associated with the remote data processing system.
20. A computer system comprising one or more processors, one or more computer-readable memories, and one or more computer-readable storage devices, and program instructions stored on at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more memories, the stored program instructions comprising: program instructions to modify a forwarding table in a network virtualization edge (NVE) in a software defined network (SDN), to indicate that a next hop for a packet having a destination address of a load-balancer instance is to be resolved by the load-balancer instance, the modified forwarding table including a first entry indicating that the destination address is a virtual address of the load-balancer instance and a second entry including a load balancer state identifier associated with the load-balancer instance, the load balancer state identifier further associated with one or more entries of a load-balancer instance table, the load balancer state identifier identifying one of three possible states of the load-balancer instance, wherein the three possible states comprise a normal state, a pre state, and a chg state, a state of the load-balancer instance identified by the load balancer state identifier changeable from one of the three possible states to another of the three possible states when an entry in the load-balancer instance table is updated, when a valid affinity between the packet and a second real server exists according to an entry in a session table, and when an age of the affinity exceeds the age threshold; program instructions to forward, using the modified forwarding table, the packet through an underlay of the SDN such that the packet tunnels from the NVE to a second NVE, the second NVE hosting a first real server managed by the load-balancer instance.
Unknown
February 9, 2021
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.