Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
CONTROLLER CONFIGURED TO PERFORM LOAD BALANCING IN A NON-APPLICATION LAYER UTILIZING A NON-APPLICATION PROTOCOL
Document Type and Number:
WIPO Patent Application WO/2023/088564
Kind Code:
A1
Abstract:
Provided is a controller (202, 304, 404) configured to perform load-balancing in a non-application layer utilizing a non-application protocol. The load-balancing includes determining which backend server out of a pool of servers (206A-N, 306A-B, 406) a data packet should be sent to. The controller (202, 304, 404) is configured to receive a data packet. The data packet includes one or more fields and a data payload. The data payload is encrypted and at least one field of the one or more fields is unencrypted. The controller (202, 304, 404) is configured to determine the operation and/or the weight for the data packet based on the unencrypted field. The controller (202, 304, 404) is configured to determine a server to send the data packet to based on the operation and/or the weight for the data packet.

Inventors:
BELKAR BEN-SHAHAR (DE)
COHEN REUVEN (DE)
Application Number:
PCT/EP2021/082330
Publication Date:
May 25, 2023
Filing Date:
November 19, 2021
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
BELKAR BEN SHAHAR (DE)
International Classes:
H04L67/00
Foreign References:
US20170187787A12017-06-29
Attorney, Agent or Firm:
KREUZ, Georg M. (DE)
Download PDF:
Claims:
CLAIMS

1. A controller (202, 304, 404) configured to perform load-balancing in a nonapplication layer, utilizing a non-applicati on protocol, wherein the load-balancing includes determining which backend server out of a pool of servers (206A-N, 306A-B, 406) a data packet should be sent to, wherein the controller (202, 304, 404) configured to: a. receive a data packet, the data packet comprising one or more fields and a data payload, wherein the data payload is encrypted and wherein at least one field of the one or more fields is unencrypted; b. determine the operation and/or the weight for the data packet based on the at least one unencrypted field; and c. determine a server to send the data packet to based on the operation and/or the weight for the data packet.

2. The controller (202, 304, 404) according to claim 1, wherein the controller (202, 304, 404) configured to: determine the server to send the data packet to based on the server current load.

3. The controller (202, 304, 404) according to claim 1 or 2, wherein the at least one field is an optional header field.

4. The controller (202, 304, 404) according to claim 3, wherein the at least one field is a field assigned to indicate an Internet Protocol address (DST IP), but utilized to carry an operation indicator.

5. The controller (202, 304, 404) according to claim 4, wherein the at least one field is timestamp field.

6. The controller (202, 304, 404) according to any preceding claim, wherein the controller (202, 304, 404) is further configured to determine the operation based on the operation indicator carried in the at least one field.

7. The controller (202, 304, 404) according to any preceding claim, wherein the controller (202, 304, 404) is further configured to determine the weight based on a weight indicator carried in the at least one field.

8. The controller (202, 304, 404) according to claim 7, wherein the at least one field is a field assigned to indicate a destination port (DST), but utilized to carry the weight indicator.

9. The controller (202, 304, 404) according to claim 7 or 8, wherein the weight indicator comprises a service indicator.

10. The controller (202, 304, 404) according to claim 9, wherein the controller (202, 304, 404) is further configured to determine the weight of the operation of the data packet based on the operation indicator in combination with the service indicator.

11. The controller (202, 304, 404) according to any preceding claim, wherein the controller (202, 304, 404) is further configured to determine the weight of the operation of the data packet based on a table-lookup.

12. The controller (202, 304, 404) according to claim 9, 10 or 11, wherein the controller (202, 304, 404) is further configured to determine the server to send the data packet so that data packets of similar services are sent to a same group of servers handling such services.

13. The controller (202, 304, 404) according to any preceding claim, wherein the nonapplication layer is a transport layer and the protocol is a transport protocol for transmitting data.

14. The controller (202, 304, 404) according to any preceding claim, wherein the nonapplication layer is a network layer and the protocol is a transport protocol for transmitting data.

15. The controller (202, 304, 404) according to any preceding claim, wherein the controller (202, 304, 404) is further configured to perform application layer loadbalancing in the non-application layer.

16. A controller (202, 304, 404) is configured to transmit a data packet, the data packet comprising one or more fields and a data payload, wherein the data payload is encrypted and wherein at least one field of the one or more fields is unencrypted, wherein the controller (202, 304, 404) is configured to include an operation indicator and/or a weight indicator for the data packet in at least one unencrypted field of the data packet.

17. The controller (202, 304, 404) according to claim 16, wherein the at least one field is a field assigned to indicate an Internet Protocol address (DST IP), but utilized to carry the operation indicator.

18. The controller (202, 304, 404) according to claim 16 or 17, wherein the at least one field is a field assigned to indicate a port (DST PORT), but utilized to carry the weight indicator.

19. The controller (202, 304, 404) according to claim 18, wherein the weight indicator is a service indicator.

20. A device comprising a controller (202, 304, 404) according to any of claims 16 to 19.

21. A method for use in a controller (202, 304, 404) configured to perform loadbalancing in a non-application layer, utilizing a non-application protocol, wherein the load-balancing includes determining which backend server out of a pool of servers (206A-N, 306A-B, 406) a data packet should be sent to, wherein the method comprises: a. receiving a data packet, the data packet comprising one or more fields and a data payload, wherein the data payload is encrypted and wherein at least one field of the one or more fields is unencrypted; b. determining the operation and/or the weight for the data packet based on the at least one unencrypted field; and c. determining a server to send the data packet to based on the operation and/or the weight for the data packet.

22. The method according to claim 21 , wherein the method further comprises determining the server to send the data packet to based on the server current load.

23. The method according to claim 21 or 22, wherein the at least one field is an optional header field.

24. The method according to claim 23, wherein the at least one field is a field assigned to indicate an Internet Protocol address (DST IP), but utilized to carry an operation indicator.

25. The method according to claim 24, wherein the at least one field is timestamp field.

26. The method according to any preceding claim, wherein the method further comprises determining the operation based on the operation indicator carried in the at least one field.

27. The method according to any preceding claim, wherein the method further comprises determining the weight based on a weight indicator carried in the at least one field.

28. The method according to any claim 27, wherein the at least one field is a field assigned to indicate a destination port (DST), but utilized to carry the weight indicator.

29. The method according to claim 27 or 28, wherein the weight indicator comprises a service indicator.

30. The method according to claim 29, wherein the method further comprises determining the weight of the operation of the data packet based on the operation indicator in combination with the service indicator.

31. The method according to any preceding claim, wherein the method further comprises determining the weight of the operation of the data packet based on a table-lookup.

32. The method according to claim 29, 30 or 31, wherein the method further comprises determining the server to send the data packet so that data packets of similar services are sent to a same group of servers handling such services.

33. The method according to any preceding claim, wherein the non-application layer is a transport layer and the protocol is a transport protocol for transmitting data.

34. The method according to any preceding claim, wherein the non-application layer is a network layer and the protocol is a transport protocol for transmitting data.

35. The method according to any preceding claim, wherein the method further comprises performing application layer load-balancing in the non-application layer.

36. A method for use in a controller (202, 304, 404) configured to transmit a data packet, the data packet comprising one or more fields and a data payload, wherein the data payload is encrypted and wherein at least one field of the one or more fields is unencrypted, wherein the controller (202, 304, 404) is configured to include an operation indicator and/or a weight indicator for the data packet in at least one unencrypted field of the data packet.

37. The method according to claim 36, wherein the at least one field is a field assigned to indicate an Internet Protocol address (DST IP), but utilized to carry the operation indicator.

38. The method according to claim 36 or 37, wherein the at least one field is a field assigned to indicate a port (DST PORT), but utilized to carry the weight indicator.

39. The method according to claim 38, wherein the weight indicator is a service indicator.

40. A device comprising a controller (202, 304, 404) that when loaded with instructions and executing those instructions is caused to execute the method according to any of claims 21 to 39.

Description:
CONTROLLER CONFIGURED TO PERFORM LOAD BALANCING IN A NON-APPLI CATION LAYER UTILIZING A NON-APPLICATION PROTOCOL

TECHNICAL FIELD

The disclosure relates to a controller configured to perform load-balancing in a nonapplication layer, utilizing a non-application protocol, and more particularly, the disclosure relates the controller is configured to transmit a data packet. Moreover, the disclosure also relates to a method for use in the controller configured to perform the load-balancing in the non-application layer, utilizing the non-application protocol.

BACKGROUND

Modem high-traffic websites handle hundreds of thousands of client requests per second, tens of millions of concurrent requests from different clients, and return the requested text, images, video, or application data, all in a fast and reliable manner. Modem computing systems generally require the addition of more servers to accomplish the above requirements. To cost-effectively scale while meeting these requirements, modem computing best practice generally requires adding more servers. A load balancer that acts as a “traffic cop”, placed in front of web servers and routes client requests across all servers capable of fulfilling those requests in a manner that maximizes speed and capacity utilization and ensures that no server is overworked, which could degrade performance. If a single server goes down, the load balancer redirects traffic to the remaining online servers. When a new server is added to the server group, the load balancer automatically starts to send requests to it.

In computer networks, a known communication system model includes partitions called abstraction layers. The abstraction layers, layer 4 to layer 7 (L4-L7) are defined based on their function. L4 refers to transport layer, L5 refers to session layer, L6 refers to the presentation layer, and L7 refers to the application layer. The transport layer is used for the transmission of data between points on a network. The session layer manages connections between applications. The presentation layer provides mapping and communication to the applications. The application layer interacts and communicates with the end-user. The load balancer implies a load balancing technique to assign new connections to the servers.

The load balancer assigns new connections to the servers using a load balancing technique. The load balancer applies different types of load balancing techniques depending upon the requirement. When a group of servers requires a distribution of requests, a round-robin load balancing technique is applied. When a new request is sent to a server with the lowest number of client connections, then a least connections load balancing technique is used. The server that has the least connections is determined by factoring in a relative computing capacity of each server. When requests are sent to a selected server using a parameter, then the least time load balancing technique is used. The parameter is computed by combining the fastest response time and lowest active connections. The least time load balancing technique is exclusively used for NGINX plus load balancer. When requests are distributed based on a key, then a hash load balancing technique is used. The key is defined using client internet protocol (IP) address or request uniform resource locator (URL). Optionally, the hash load balancing technique is used by the NGINX plus load balancer for minimizing redistribution of loads if a set of data upstream servers change. When the IP address of the client is used to determine which server receives a request, then the IP hash load balancing technique is used. A random with two choices load balancing technique is used by sending a request to a server that is picked randomly out of two servers, then by applying the least connections load balancing technique on the selected server. For NGINX plus load balancer, the least time load balancing technique is used.

FIG. 1 A is an exemplary diagram 100A of performing load-balancing at the transport layer in accordance with the prior art. The exemplary diagram 100A includes a client device 102, a load balancer 104, and backend servers 106A-N. The load balancer 104 at the transport layer performs load-balancing on the source and destination IP addresses and ports that are recorded in a packet header. The load balancer’s IP address is broadcast to the client device 102 for a website or a service. So, the client device 102 registers the load balancer’s IP address as the destination IP address in their requests. When the load balancer 104 at the transport layer receives a request and makes a load balancing decision, it performs network address translation (NAT) on the request packet to change the recorded destination IP address from the "server IP address" to a specifically chosen machine for this connection. Similarly, before forwarding backend servers 106A-N responses to the client device 102, the load balancer 104 can change the source address recorded in the packet header from the server’s IP address to its own. The destination and source TCP port numbers recorded in the packets are sometimes also changed similarly. The load balancer 104 at the transport layer may be a hardware device that runs proprietary load-balancing software, and NAT operations if exist, maybe specialized chips rather than software. The load balancer 104 balances effectively for simple packetlevel load balancing. The load balancer 104 at the transport layer manages network traffic based on network information such as application ports and protocols without considering the actual content of data messages. Moreover, the content of data messages is neither inspected nor decrypted to be forwarded quickly, efficiently, and securely. Hence, the load balancer 104 cannot route the traffic based on the media type, localization rules, or other criteria. The load balancer 104 at the transport layer requires less computation. But the performance of the load balancer 104 at the transport layer has become negligible or irrelevant.

FIG. IB is an exemplary diagram 100B of performing load-balancing at an application layer in accordance with the prior art. The exemplary diagram 100B includes a client device 108, a load balancer 110, and backend servers 112A-N. The load balancer 110 at the application layer performs load balancing using techniques such as hypertext transfer protocol (HTTP) and simple mail transfer protocol (SMTP) to provide decisions based on the actual content of each message. The load balancer 110 at the application layer terminates network traffic, performs decryption of messages as needed, inspects messages, makes content-based routing decisions, initiates a new transmission control protocol (TCP) connection to the appropriate upstream server, and writes the request to the server. While the need for encryption incurs a performance penalty for the application layer processing, this can be largely reduced through the use of secure socket layer (SSL) offload functionality. The load balancer 110 at the application layer determines more intelligent load balancing decisions and content optimizations. The load balancer 110 identifies unique client sessions to provide server persistence, or “sticky sessions”, sending all client requests to the same server for greater efficiency by viewing or actively injecting cookies. Packet-level visibility allows content caching to be used, holding frequently accessed items in memory for easy retrieval. The load balancer 110 at the application layer provides intelligence to handle protocols that multiplex requests onto a single connection to optimize traffic and reduce overhead. The load balancer 110 at the application layer is expensive and adds complexity to act as a termination point and establish a connection to the backend servers 112A-N.

Therefore, there arises a need to address the aforementioned technical drawbacks in known techniques or technologies in load balancing in a non-application layer.

SUMMARY

It is an object of the disclosure to provide a controller configured to perform load balancing in a non-application layer, utilizing a non-application protocol, the controller is configured to transmit a data packet, and a method for use in the controller configured to perform the load balancing in the non-application layer utilizing the non-application protocol while avoiding one or more disadvantages of prior art approaches.

This object is achieved by the features of the independent claims. Further, implementation forms are apparent from the dependent claims, the description, and the figures.

The disclosure provides a controller configured to perform load balancing in a non- application layer utilizing a non-application protocol, the controller is configured to transmit a data packet, and a method for use in the controller configured to perform the load balancing in the non-application layer utilizing the non-application protocol.

According to a first aspect, there is provided a controller to perform load-balancing in a non-application layer utilizing a non-application protocol. The load-balancing includes determining which backend server out of a pool of servers a data packet should be sent to. The controller configured to receive a data packet. The data packet includes one or more fields and a data payload. The data payload is encrypted and at least one field of the one or more fields is unencrypted. The controller configured to determine the operation and/or the weight for the data packet based on the at least one unencrypted field. The controller configured to determine a server to send the data packet to based on the operation and/or the weight for the data packet. The controller reduces cost of a load balancer and uses an L4 load balancer with decoding capabilities of higher layers load balancing. The controller reduces the latency as there is no need to generate a termination point on the load balancer. The controller reduces the number of connections to the pool of servers as there is no need to terminate proxy connection at the load balancer. The controller provides intelligent load balancing decisions and content optimizations. The controller requires less computation. As the controller routes, the traffic based on a media type, localization rules, or other criteria with knowledge of the content of data message, the performance of the controller at the transport layer is very efficient.

Optionally, the controller is configured to determine the server to send the data packet to based on the server current load.

Optionally, the at least one field is an optional header field. The at least one field may be a field assigned to indicate an Internet Protocol address (DST IP), but utilized to carry an operation indicator. The at least one field may be timestamp field.

Optionally, the controller is further configured to determine the operation based on the operation indicator carried in the at least one field.

Optionally, the controller is further configured to determine the weight based on a weight indicator carried in the at least one field.

Optionally, the at least one field is a field assigned to indicate a destination port (DST), but utilized to carry the weight indicator. Optionally, the weight indicator includes a service indicator.

Optionally, the controller is further configured to determine the weight of the operation of the data packet based on the operation indicator in combination with the service indicator.

Optionally, the controller is further configured to determine the weight of the operation of the data packet based on a table-lookup. Optionally, the controller is further configured to determine the server to send the data packet so that data packets of similar services are sent to a same group of servers handling such services.

Optionally, the non-application layer is a transport layer and the protocol is a transport protocol for transmitting data.

Optionally, the non-application layer is a network layer and the protocol is a transport protocol for transmitting data.

Optionally, the controller is further configured to perform application layer loadbalancing in the non-application layer.

According to a second aspect, there is provided a controller configured to transmit a data packet. The data packet includes one or more fields and a data payload. The data payload is encrypted and at least one field of the one or more fields is unencrypted. The controller is configured to include an operation indicator and/or a weight indicator for the data packet in at least one unencrypted field of the data packet.

The controller provides intelligent load balancing decisions and content optimizations. The controller requires less computation. As the controller routes, the traffic based on a media type, localization rules, or other criteria with knowledge of the content of data message, the performance of the controller at the transport layer is very efficient.

Optionally, the at least one field is a field assigned to indicate an Internet Protocol address (DST IP), but utilized to carry the operation indicator.

Optionally, the at least one field is a field assigned to indicate a port (DST PORT), but utilized to carry the weight indicator. Optionally, the weight indicator is a service indicator.

According to a third aspect, there is provided a device including a controller.

According to a fourth aspect, a method for use in a controller configured to perform loadbalancing in a non-application layer, utilizing a non-application protocol. The loadbalancing includes determining which backend server out of a pool of servers a data packet should be sent to. The method includes receiving a data packet. The data packet includes one or more fields and a data payload. The data payload is encrypted and at least one field of the one or more fields is unencrypted. The method includes determining the operation and/or the weight for the data packet based on the at least one unencrypted field. The method includes determining a server to send the data packet to based on the operation and/or the weight for the data packet.

The method for use in the controller reduces cost of the load balancer and uses an L4 load balancer with decoding capabilities of higher layers load balancing. The method for use in the controller reduces the latency as there is no need to generate a termination point on the load balancer. The method for use in the controller reduces the number of connections to the pool of servers as there is no need to terminate a proxy connection at the load balancer. The method for use in the controller establishes a different connection with backend servers. The method provides intelligent load balancing decisions and content optimizations. The method for use in the controller requires less computation.

Optionally, the method further includes determining the server to send the data packet to based on the server current load.

Optionally, the at least one field is an optional header field.

Optionally, the at least one field is a field assigned to indicate an Internet Protocol address (DST IP), but utilized to carry an operation indicator. Optionally, the at least one field is timestamp field.

Optionally, the method further includes determining the operation based on the operation indicator carried in the at least one field.

Optionally, the method further includes determining the weight based on a weight indicator carried in the at least one field.

Optionally, the at least one field is a field assigned to indicate a destination port (DST), but utilized to carry the weight indicator.

Optionally, the weight indicator includes a service indicator. Optionally, the method further includes determining the weight of the operation of the data packet based on the operation indicator in combination with the service indicator.

Optionally, the method further includes determining the weight of the operation of the data packet based on a table-lookup.

Optionally, the method further includes determining the server to send the data packet so that data packets of similar services are sent to a same group of servers handling such services.

Optionally, the non-application layer is a transport layer and the protocol is a transport protocol for transmitting data.

Optionally, the non-application layer is a network layer and the protocol is a transport protocol for transmitting data.

Optionally, the method further includes performing application layer load-balancing in the non-application layer.

According to a fifth aspect, a method for use in a controller configured to transmit a data packet. The data packet includes one or more fields and a data payload. The data payload is encrypted and at least one field of the one or more fields is unencrypted. The controller is configured to include an operation indicator and/or a weight indicator for the data packet in at least one unencrypted field of the data packet.

Optionally, the at least one field is a field assigned to indicate an Internet Protocol address (DST IP), but utilized to carry the operation indicator.

Optionally, the at least one field is a field assigned to indicate a port (DST PORT), but utilized to carry the weight indicator. The weight indicator may be a service indicator.

According to a sixth aspect, a device including a controller that when loaded with instructions and executing those instructions is caused to execute the above methods.

Therefore, in contradistinction to the prior art, according to the controller configured to perform load balancing in a non-application layer utilizing a non-application protocol. The controller is configured to transmit a data packet, the data packet includes one or more fields and a data pay load. The controller reduces cost of the load balancer and uses an L4 load balancer with decoding capabilities of higher layers load balancing. The controller reduces the latency as there is no need to generate a termination point on the load balancer. The controller reduces number of connections to the pool of servers as there is no need to terminate proxy connection at the load balancer. The controller establishes a different connection with backend servers. The controller provides intelligent load balancing decisions and content optimizations. The controller requires less computation. As the controller routes, the traffic based on a media type, localization rules, or other criteria with knowledge of the content of data message, the performance of the controller at the transport layer is very efficient. A network sniffer checks if similar requests are getting same values on the one or more fields of the data packet. The network sniffer checks if different requests are different same values on the one or more fields of the data packet.

These and other aspects of the disclosure will be apparent from and the implementation(s) described below.

BRIEF DESCRIPTION OF DRAWINGS

Implementations of the disclosure will now be described, by way of example only, with reference to the accompanying drawings, in which:

FIGS. 1A and IB are exemplary diagrams of performing load-balancing at a transport layer and an application layer in accordance with the prior art;

FIG. 2 is a block diagram of a controller configured to perform load-balancing in a nonapplication layer, utilizing a non-application protocol in accordance with an implementation of the disclosure;

FIG. 3 is an exemplary block diagram that illustrates a controller for performing loadbalancing to determine a server to send a data packet to based on an operation indicator and/or a weight indicator for the data packet in accordance with an implementation of the disclosure; FIG. 4 is an exemplary block diagram that illustrates a controller for assigning timestamp field to determine a server to send a data packet to in accordance with an implementation of the disclosure;

FIG. 5 is a flow diagram that illustrates a method for use in a controller configured to perform load-balancing in a non-application layer, utilizing a non-application protocol in accordance with an implementation of the disclosure; and

FIG. 6 is an illustration of a computing arrangement (e.g. a controller) that is used in accordance with implementations of the disclosure.

DETAILED DESCRIPTION OF THE DRAWINGS

Implementations of the disclosure provide a controller configured to perform load balancing in a non-application layer, utilizing a non-application protocol, the controller is configured to transmit a data packet, and a method for use in the controller configured to perform the load balancing in the non-application layer utilizing the non-application protocol.

To make solutions of the disclosure more comprehensible for a person skilled in the art, the following implementations of the disclosure are described with reference to the accompanying drawings.

Terms such as "a first", "a second", "a third", and "a fourth" (if any) in the summary, claims, and foregoing accompanying drawings of the disclosure are used to distinguish between similar objects and are not necessarily used to describe a specific sequence or order. It should be understood that the terms so used are interchangeable under appropriate circumstances, so that the implementations of the disclosure described herein are, for example, capable of being implemented in sequences other than the sequences illustrated or described herein. Furthermore, the terms "include" and "have" and any variations thereof, are intended to cover a non-exclusive inclusion. For example, a process, a method, a system, a product, or a device that includes a series of steps or units, is not necessarily limited to expressly listed steps or units but may include other steps or units that are not expressly listed or that are inherent to such process, method, product, or device. FIG. 2 is a block diagram 200 of a controller 202 configured to perform load-balancing in a non-application layer, utilizing a non-application protocol in accordance with an implementation of the disclosure. The block diagram 200 includes the controller 202, and a pool of servers 204A-N. The load-balancing includes determining which backend server out of the pool of servers 204A-N a data packet should be sent to. The controller 202 configured to receive the data packet. The data packet includes one or more fields and a data payload. The data payload is encrypted and at least one field of the one or more fields is unencrypted. The controller 202 configured to determine the operation and/or the weight for the data packet based on the at least one unencrypted field. The controller 202 configured to determine a server to send the data packet to based on the operation and/or the weight for the data packet.

The controller 202 reduces cost of a load balancer and uses an L4 load balancer with decoding capabilities of higher layers load balancing. The controller 202 reduces the latency as there is no need to generate a termination point on the load balancer d. The controller 202 reduces number of connections to the pool of servers 204A-N as there is no need to terminate proxy connection at the load balancer. The controller 202 establishes a different connection with backend servers. The controller 202 provides intelligent load balancing decisions and content optimizations. As the controller 202 routes, the traffic based on a media type, localization rules, or other criteria with knowledge of the content of data message, the performance of the controller 202 at the transport layer is very efficient.

Optionally, the controller 202 is configured to determine a server to send the data packet to based on the server current load.

Optionally, the at least one field is an optional header field. Optionally, the at least one field is a field assigned to indicate an Internet Protocol address (DST IP), but utilized to carry an operation indicator. Optionally, the at least one field timestamp field.

Optionally, the controller 202 is further configured to determine the operation based on an operation indicator carried in the at least one field. Optionally, the controller 202 is further configured to determine the weight based on a weight indicator carried in the at least one field. Optionally, the weight indicator includes a service indicator.

Optionally, the controller 202 is further configured to determine the weight of the operation of the data packet based on the operation indicator in combination with the service indicator.

Optionally, the controller 202 is further configured to determine the weight of the operation of the data packet based on a table-lookup.

Optionally, the non-application layer is a transport layer and the protocol is a transport protocol for transmitting data.

Optionally, the non-application layer is a network layer and the protocol is a transport protocol for transmitting data.

Optionally, the controller 202 is further configured to perform application layer loadbalancing in the non-application layer.

FIG. 3 is an exemplary diagram 300 that illustrates a controller 304 for performing loadbalancing to determine a server to send a data packet to based on an operation indicator and/or a weight indicator for the data packet in accordance with an implementation of the disclosure. The exemplary diagram 300 includes a client device 302, the controller 304, and a pool of servers 306A, 306B. The client device 302 transmits the data packet. The controller 304 is configured to receive the data packet from the client device 302. The controller 304 is configured to transmit the data packet to the server. The data packet includes one or more fields and a data payload. The data payload is encrypted and at least one field of the one or more fields is unencrypted. The controller 304 is configured to include an operation indicator and/or a weight indicator for the data packet in at least one unencrypted field of the data packet.

Optionally, the at least one field is a field assigned to indicate an Internet Protocol address (DST IP), but utilized to carry the operation indicator. Optionally, the at least one field is a field assigned to indicate a port (DST PORT), but utilized to carry the weight indicator. Optionally, the weight indicator is a service indicator.

As shown in FIG. 3, an Internet Protocol address (DST IP) of the client device 302 may be 44.1.1.1, the IP address of the controller 304 may be 44.2.2.2, and 44.2.2.3, and the DST IP addresses of the pool of servers 306A, 306B may be 44.3.3.3, 44.4.4.4, 44.5.5.5, and 44.6.6.6. As shown in FIG. 3, a table 308 that includes Ips of the controller 304 which performs load-balancing in a non-application layer, a type of contents (e.g. feed, shopping), a type of services (e.g. comments, pictures, add/remove an item, checkout) and DSP port correspond to each DST server IP. Each DST server IP has a weight indicator and current load, for example, the DST server IP 44.3.3.3 has the weight indicator 1 and the current load A, the DST server IP 44.4.4.4 has the weight indicator 3 and the current load B, the DST server IP 44.5.5.5 has the weight indicator 1 and the current load C and the DST server IP 44.6.6.6 has the weight indicator 5 and the current load D.

For example, if the client device 302 sends the data packet, the controller 304 looks at the IP and DST port and knows what is the operation and weight. As the controller 304 knows the weight of the operation, the controller 304 can direct the packet to a least loaded backend server from an operation server pool. For example, if the client device 302 sends the data packet, the controller 304 looks at the IP and DST port corresponding to the DST server IP 44.3.3.3 and knows what is the operation and weight of the DST server IP

44.3.3.3. As the controller 304 knows the weight of the operation of the DST server IP

44.3.3.3, the controller 304 can direct the packet to the server that includes the DST server IP 44.3.3.3.

As shown in FIG. 3, the controller 304 is configured to receive feedback from the pool of servers 306A, 306B about their current state. Optionally, the controller 304 is configured to receive all the calculation of a backend server load using timestamps and capabilities. The current state may be a current load state and/or any configuration change of the pool of servers 306A, 306B. If the current load of any server is more, the controller 304 may change the server or add another server to send the data packet to.

FIG. 4 is an exemplary diagram 400 that illustrates a controller 404 for assigning timestamp field to determine a server to send a data packet to in accordance with an implementation of the disclosure. The exemplary diagram 400 includes a client device 402, the controller 404, and a pool of servers 406. The client device 402 transmits the data packet to the controller 404. The data packet includes one or more fields and a data payload 408. Optionally, the at least one field is an optional header field. Optionally, the at least one field is a field assigned to indicate an Internet Protocol address (DST IP), but utilized to carry the operation indicator. Optionally, the at least one field of the data packet includes timestamp field.

Optionally, an Internet Protocol (IP) address of the client device 402 may be 44.1.1.1 and the DST IP address of the controller 404 may be 44.2.2.2, the DST IP addresses of the pool of servers 406 may be 44.3.3.3, 44.4.4.4.

The timestamp field, and an optional header field depict characteristics of the data pay load 408. As shown in FIG. 4, the characteristics of the data pay load 408 may include media access control (MAC) header, IP header, transport layer protocol (TCP) header, TCP option 8, kind, length, timestamp value, and timestamp echo reply. The optional header field may be used to carry information in that field. The information may be a weight indicator. Optionally, the DST IP and DST together define the weight indicator.

The timestamp field may be used to carry other information. As shown in a table-lookup 410, the DST ports may include a service on an application of the client device 402. Each application may have one or more DST ports. Optionally, the controller 404 is further configured to determine the weight of the operation of the data packet based on the tablelookup 410.

As shown in the table-lookup 410, the service may be, for example, pictures, comments, etc. Optionally, the data payload is encrypted, and the at least one field of the one or more fields is unencrypted. Optionally, the information of the weight indicator is encoded into the unencrypted field of the data payload. Optionally, the application of the client device 402 inserts an encoding identifier of the data payload and a content identifier into the unencrypted field of the data payload. The controller 404 is configured to decode the unencrypted field of the data payload and decide which backend server to direct the data packet to. Optionally, the controller 404 is configured to add request routing decisions based on the characteristics of the data pay load. FIG. 5 is a flow diagram 500 that illustrates a method for use in a controller configured to perform load-balancing in a non-application layer, utilizing a non-application protocol in accordance with an implementation of the disclosure. The load balancing includes determining which backend server out of a pool of servers a data packet should be sent to. At a step 502, a data packet is received at the controller. The data packet includes one or more fields and a data payload. The data payload is encrypted and at least one field of the one or more fields is unencrypted. At a step 504, the operation and/or the weight for the data packet are determined based on the at least one unencrypted field. At a step 506, a server is determined to send the data packet to based on the operation and/or the weight for the data packet.

The method for use in the controller reduces cost of the load balancer and uses an L4 load balancer with decoding capabilities of higher layers load balancing. The method for use in the controller reduces the latency as there is no need to generate a termination point on the load balancer. The method for use in the controller reduces the number of connections to the pool of servers as there is no need to terminate a proxy connection at the load balancer. The method for use in the controller establishes a different connection with backend servers. The method provides intelligent load balancing decisions and content optimizations. The method for use in the controller requires less computation. As the method for use in the controller routes, the traffic based on a media type, localization rules, or other criteria with knowledge of the content of data message, the performance of the controller at the transport layer is very efficient.

Optionally, the method further includes determining the server to send the data packet to based on the server current load.

Optionally, the at least one field is an optional header field.

Optionally, the at least one field is a field assigned to indicate an Internet Protocol address (DST IP), but utilized to carry an operation indicator. Optionally, the at least one field is timestamp field.

Optionally, the method further includes determining the operation based on the operation indicator carried in the at least one field. Optionally, the method further includes determining the weight based on a weight indicator carried in the at least one field.

Optionally, the at least one field is a field assigned to indicate a destination port (DST), but utilized to carry the weight indicator.

Optionally, the weight indicator includes a service indicator.

Optionally, the method further includes determining the weight of the operation of the data packet based on the operation indicator in combination with the service indicator.

Optionally, the method further includes determining the weight of the operation of the data packet based on a table-lookup.

Optionally, the method further includes determining the server to send the data packet so that data packets of similar services are sent to a same group of servers handling such services.

Optionally, the non-application layer is a transport layer and the protocol is a transport protocol for transmitting data.

Optionally, the non-application layer is a network layer and the protocol is a transport protocol for transmitting data.

Optionally, the method further includes performing application layer load-balancing in the non-application layer.

In an implementation, a method for use in a controller configured to transmit a data packet is provided. The data packet includes one or more fields and a data payload, wherein the data payload is encrypted and at least one field of the one or more fields is unencrypted. The controller is configured to include an operation indicator and/or a weight indicator for the data packet in at least one unencrypted field of the data packet.

Optionally, the at least one field is a field assigned to indicate an Internet Protocol address (DST IP), but utilized to carry the operation indicator. Optionally, the at least one field is a field assigned to indicate a port (DST PORT), but utilized to carry the weight indicator. The weight indicator may be a service indicator.

In an implementation, a device includes a controller that when loaded with instructions and executing those instructions is caused to execute the above methods is provided.

FIG. 6 is an illustration of an exemplary computing arrangement (e.g. a Controller) 600 in which the various architectures and functionalities of the various previous implementations may be implemented. As shown, the computing arrangement 600 includes at least one processor 604 that is connected to a bus 602, wherein the computing arrangement 600 may be implemented using any suitable protocol, such as PCI (Peripheral Component Interconnect), PCI-Express, AGP (Accelerated Graphics Port), HyperTransport, or any other bus or point-to-point communication protocol (s). The computing arrangement 600 also includes a memory 606.

Control logic (software) and data are stored in the memory 606 which may take the form of random-access memory (RAM). In the present description, a single semiconductor platform may refer to a sole unitary semiconductor-based integrated circuit or chip. It should be noted that the term single semiconductor platform may also refer to multi-chip modules with increased connectivity which simulate on-chip modules with increased connectivity which simulate on-chip operation, and make substantial improvements over utilizing a conventional central processing unit (CPU) and bus implementation. Of course, the various modules may also be situated separately or in various combinations of semiconductor platforms per the desires of the user.

The computing arrangement 600 may also include a secondary storage 610. The secondary storage 610 includes, for example, a hard disk drive and a removable storage drive, representing a floppy disk drive, a magnetic tape drive, a compact disk drive, digital versatile disk (DVD) drive, recording device, universal serial bus (USB) flash memory. The removable storage drive at least one of reads from and writes to a removable storage unit in a well-known manner.

Computer programs, or computer control logic algorithms, may be stored in at least one of the memory 606 and the secondary storage 610. Such computer programs, when executed, enable the computing arrangement 600 to perform various functions as described in the foregoing. The memory 606, the secondary storage 610, and any other storage are possible examples of computer-readable media.

In an implementation, the architectures and functionalities depicted in the various previous figures may be implemented in the context of the processor 604, a graphics processor coupled to a communication interface 612, an integrated circuit (not shown) that is capable of at least a portion of the capabilities of both the processor 604 and a graphics processor, a chipset (i.e., a group of integrated circuits designed to work and sold as a unit for performing related functions, etc.).

Furthermore, the architectures and functionalities depicted in the various previous figures may be implemented in the context of a general computer system, a circuit board system, a game console system dedicated for entertainment purposes, an application-specific system. For example, the computing arrangement 600 may take the form of a desktop computer, a laptop computer, a server, a workstation, a game console, an embedded system.

Furthermore, the computing arrangement 600 may take the form of various other devices including, but not limited to a personal digital assistant (PDA) device, a mobile phone device, a smart phone, a television, etc. Additionally, although not shown, the computing arrangement 600 may be coupled to a network (e.g., a telecommunications network, a local area network (LAN), a wireless network, a wide area network (WAN) such as the Internet, a peer-to-peer network, a cable network, or the like) for communication purposes through an I/O interface 608.

It should be understood that the arrangement of components illustrated in the figures described are exemplary and that other arrangement may be possible. It should also be understood that the various system components (and means) defined by the claims, described below, and illustrated in the various block diagrams represent components in some systems configured according to the subject matter disclosed herein. For example, one or more of these system components (and means) may be realized, in whole or in part, by at least some of the components illustrated in the arrangements illustrated in the described figures. In addition, while at least one of these components are implemented at least partially as an electronic hardware component, and therefore constitutes a machine, the other components may be implemented in software that when included in an execution environment constitutes a machine, hardware, or a combination of software and hardware.

Although the disclosure and its advantages have been described in detail, it should be understood that various changes, substitutions, and alterations can be made herein without departing from the spirit and scope of the disclosure as defined by the appended claims.