Internet DRAFT - draft-yao-alto-core-level-load-balancing
draft-yao-alto-core-level-load-balancing
Application-Layer Traffic Optimization K. Yao
Internet-Draft Z. Li
Intended status: Informational China Mobile
Expires: 14 September 2023 T. Pan
Y. Zou
Beijing University of Posts and Telecommunications
13 March 2023
A Load-aware core level load balancing framework
draft-yao-alto-core-level-load-balancing-00
Abstract
Most existing literature on load balancing in data center
networks(DCN) focuses on balancing traffic between servers (links),
but there is relatively little attention given to balancing traffic
at the core-level of individual servers. In this draft, we present a
load balancing framework for DCN that is aware of core-level load, in
order to address this issue. Specifically, our approach transfers
real-time load from CPUs to an L4 load balancer, which then selects a
core with lower load based on load information to deliver the data
packet. Theoretically, our approach can completely avoid this
problem, making the system more stable and enabling higher CPU
utilization without overprovisioning.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on 14 September 2023.
Copyright Notice
Copyright (c) 2023 IETF Trust and the persons identified as the
document authors. All rights reserved.
Yao, et al. Expires 14 September 2023 [Page 1]
Internet-Draft Application-Layer Traffic Optimization March 2023
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components
extracted from this document must include Revised BSD License text as
described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Revised BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Conventions Used in This Document . . . . . . . . . . . . . . 3
2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Requirements Language . . . . . . . . . . . . . . . . . . 3
3. Framework Overview . . . . . . . . . . . . . . . . . . . . . 3
4. Server side design . . . . . . . . . . . . . . . . . . . . . 4
5. LB side design . . . . . . . . . . . . . . . . . . . . . . . 5
6. Security Considerations . . . . . . . . . . . . . . . . . . . 6
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6
8. Normative References . . . . . . . . . . . . . . . . . . . . 6
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 7
1. Introduction
Current load balancing strategies in data centers primarily focus on
link balancing, with the goal of distributing traffic evenly across
parallel paths to improve network link utilization and prevent
network congestion. Methods such as ECMP [RFC2991]and WCMP[WCMP] use
hashing to distribute traffic to different paths. However, these
methods do not consider core-level server load balancing, which can
lead to actual load imbalances in data center networks where heavy-
hitter flows coexist with low-rate flows. Some existing works
estimate server load balancing between servers based on traffic, but
there are two issues. First, load estimation may have bias, leading
to traffic being assigned to heavily-loaded servers. Second, these
methods lack granularity at the CPU core level, which may result in
the phenomenon of single-core overload within servers. In this
paper, we attempt to address these issues by transmitting CPU load to
the load balancer, which can obtain global load information and then
allocate traffic to servers based on core-level targets.
Our solution has the following challenges, in server-side, the first
challenge is to smoothly manage the rapidly changing load on the
server. The second challenge is to insert load information into data
packets and transmit it to the load balancer through the shortest
path. Finally, it may require multi-hop routing to reach the
destination, and thus ensuring real-time load balancing becomes a
Yao, et al. Expires 14 September 2023 [Page 2]
Internet-Draft Application-Layer Traffic Optimization March 2023
critical issue. And in load balancer:, the first challenge for the
load balancer is to allocate processing cores to streams based on
load information. The second challenge is to accurately deliver
colored business streams to the appropriate cores. Finally, the load
balancer needs to ensure the consistency of streams while minimizing
extreme single-core pressure.
2. Conventions Used in This Document
2.1. Terminology
CID Core Identifier
CPU Central Processing Unit
LB Load Balancer
NIC Network Interface Card
2.2. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP
14[RFC2119][RFC8174] when, and only when, they appear in all
capitals, as shown here.
3. Framework Overview
We present the overall framework of our design, as shown in Fig 1.
Each server sends internal core load information to the load
balancer, and we use smoothed CPU utilization as a measure of load.
The server encapsulates the load into a load-aware data packet and
passes it to the load balancer through layer two or layer three
methods. The load balancer can be a x86-based server running virtual
machine or a switch based on programmable ASIC. The load balancer
parses the load information carried in the load-aware data packet and
maintains k server-CPU pairs with the lowest load using the data
structure of a minimum heap. New connections are fairly assigned to
these k server-CPU pairs by the load balancer. To ensure consistency
of flows, we use a Redirect table in the load balancer to record the
state of flows. Data packets that hit table entries are directly
forwarded to the corresponding CPU.
Yao, et al. Expires 14 September 2023 [Page 3]
Internet-Draft Application-Layer Traffic Optimization March 2023
+----------+-----+-----+ +--------------------+
Flow | Flow ID | DIP | CID | miss | Minimum heap with |
--------------> +----------+-----+-----+ ------>|k least-loaded cores|
| | | | | |
+----------+-----+-----+ +----------+---------+
Redirect table |
| Select core |
v hit for IP flow |
+----------------------+<------------------+
data packet| L4 Load-balancer |data packet
+----------+ +----------+
| | (Tofino/x86) | |
| +------->+--+-^-----------^--+--+<------+ |
| | | | Load-aware| | | |
| | | | packet | | | |
+--v-+---+ +--v-+---+ +--+--v--+ +--+--v--+
| Rack1 | | Rack2 | | Rack3 | | Rack4 |
| +----+ | | +----+ | | +----+ | | +----+ |
| +----+ | | +----+ | | +----+ | | +----+ |
| | | | | | | |
| +----+ | | +----+ | | +----+ | | +----+ |
| +----+ | | +----+ | | +----+ | | +----+ |
| | | | | | | |
+--------+ +--------+ +--------+ +--------+
Figure 1: Figure 1: Load-aware core-level LB Framework
4. Server side design
To smooth the historical loads of each core on the server side, we
use exponential smoothing to smooth the CPU utilization obtained each
time:
Load_n = alpha * Load_get + (1-alpha) * Load_n-1
Where Load_get is the load value obtained this time, Load_n-1 is the
result of the last calculation, and alpha is the smoothing parameter.
With the above formula, we can obtain a smoothed load value Load_n to
represent the CPU load at this time.
When congestion occurs in the network, the core load information
carried by the data packets may become invalid. Therefore, we need
to record the timestamp when the data packets are sent from the
server in the packets. When the packets arrive at the load balancer,
the load balancer calculates the transmission delay of the packets.
If the transmission delay is too large, the load balancer will not
select that server as the target for traffic delivery (assuming there
is only one path from the LB to the server) because the path is
Yao, et al. Expires 14 September 2023 [Page 4]
Internet-Draft Application-Layer Traffic Optimization March 2023
already congested. At this point, regardless of whether the server's
cores are overloaded or not, no traffic will be assigned to that
server.
To design the packet message structure to carry load information, it
is not necessary to record the load of all cores in the packet. Only
the load of the lowest n cores needs to be recorded. We have
designed two different solutions to deal with different scenarios.
Firstly, when there is a fixed path between the load balancer and the
server, source routing can be used to send the packets to the load
balancer. The packet message structure is designed as follows,after
the Ethernet frame header, we add the SR field, and each time it goes
to a switch on the path, the packet is bounced one SR header from the
stack and finally arrives at the load balancer, and the packet also
contains the source IP, CPU ID, CPU load and timestamp.
+-+-+-+-+-+-+-+-+-+-+-+~ 48 bits~-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Mac |
+-+-+-+-+-+-+-+-+-+-+-+~ 48 bits~-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Mac |
+-+~ 16 bits~-+-+~ 8 bits~-+-+~ 8 bits~-+-+~ 8 bits~-+-+~ 8 bits~-+
| Type | SR1 | SR2 | SR3 | SR4 |
+-+-+-+-+~ 32 bits~ -+-+-+-+-+-+--+-+~ 8 bits~-+-+-+~ 8 bits~-+-+-+
| Source IP | CPU ID | CPU Load |
+-+-+-+-+-+-+-+-+-+-+-+-+~ 48 bits~-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: Figure 2: Message format
Secondly, when multiple hops of non-fixed routing are required
between the load balancer and the server, the core ID and core load
can be inserted in the IPv6 packet and the packet can be routed to
the load balancer. We mark the packet as a load notification packet
in the Traffic Class field of IPv6, and fill in the 8-bit CPU ID and
8-bit core load in the Flow Label field, and then route it to the
load balancer.
5. LB side design
The load balancer needs to parse the load notification packets from
the servers, extract the load of each core in each server, and
maintain an internal minimum heap structure. The load information of
the cores that has been obtained within a certain period of time is
adjusted through the heap to obtain the k cores with the lowest load.
Before the next minimum heap is generated, we allocate the new flows
to these k cores with the lowest load through polling.
Yao, et al. Expires 14 September 2023 [Page 5]
Internet-Draft Application-Layer Traffic Optimization March 2023
Ordinary L4 load balancers map packets destined for a service with a
virtual IP address (VIP) to a pool of servers with multiple direct IP
addresses (DIP or DIP pool). In our solution, the load balancer
needs to be accurate at the core level. Therefore, we specify the
DIP and delivery core directly for the first packet and record the
flow identifier (Flow ID), direct IP address (DIP), and core
identifier (CID) in a table to ensure flow consistency. In case of
extreme situations, such as when a large single flow causes too much
pressure on the core, we can reduce the CPU load by using the method
of back pressure on the large flow.
We need to mark the packets to specify the target core in the
destination server. For IP, we can overwrite the original VIP with
DIP. For core ID, in order not to overwrite the original information
of the user packet, we construct a new packet header and insert it
into the user packet to be transmitted to the server NIC. The NIC
parses the destination core ID, removes the added packet header, and
delivers the restored user packet to the designated core.
6. Security Considerations
TBD.
7. IANA Considerations
TBD.
8. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC2991] Thaler, D. and C. Hopps, "Multipath Issues in Unicast and
Multicast Next-Hop Selection", RFC 2991,
DOI 10.17487/RFC2991, November 2000,
<https://www.rfc-editor.org/info/rfc2991>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[WCMP] Junlan Zhou, Malveeka Tewari, Min Zhu, Abdul Kabbani, Leon
Poutievski, Arjun Singh, and Amin Vahdat, "WCMP: Weighted
cost multipathing for improved fairness in data centers",
April 2014, <WCMP>.
Yao, et al. Expires 14 September 2023 [Page 6]
Internet-Draft Application-Layer Traffic Optimization March 2023
Authors' Addresses
Kehan Yao
China Mobile
Beijing
100053
China
Email: yaokehan@chinamobile.com
Zhiqiang Li
China Mobile
Beijing
100053
China
Email: lizhiqiangyjy@chinamobile.com
Tian Pan
Beijing University of Posts and Telecommunications
Beijing
100876
China
Email: pan@bupt.edu.cn
Yan Zou
Beijing University of Posts and Telecommunications
Beijing
100876
China
Email: zouyan@bupt.edu.cn
Yao, et al. Expires 14 September 2023 [Page 7]