Load Balancing Using P4 in Software-Defined Networks

Chih-Heng Ke,
Shih-Jung Hsu,


Conventional software-defined networks (SDNs) use a controller to write static rules into SDN switches through OpenFlow protocol. But legacy SDN switches cannot remember the data flow processing status. When the controller fails and cannot connect with the switch, the load balance function is affected. Conventional load balancer (LB), such as Linux Virtual Server and HAProxy, must perform layer-by-layer decapsulation, retrieve the information required to execute load balancing algorithms, and add the headers back before transmitting a packet. This process is time intensive. Therefore, we use P4 language to implement the LB, analyzes the packet headers, and uses stateful objects to record data flow information. The P4 LB can process packets according to predefined rules and operating status without operations such as encapsulation or decapsulation. Based on the aforementioned characteristics, we present four packet scheduling schemes, connection hash, random, round-robin, and weighted round-robin. Therefore, this P4 LB can independently function, without a controller. However, when a controller is available, the controller can be used to monitor the health of web servers. In this case, the controller can detect a server fault and inform the P4 LB to block the request to the malfunctioning server to decrease the dispatching failure rate.

Citation Format:
Chih-Heng Ke, Shih-Jung Hsu, "Load Balancing Using P4 in Software-Defined Networks," Journal of Internet Technology, vol. 21, no. 6 , pp. 1671-1679, Nov. 2020.

Full Text:



  • There are currently no refbacks.

Published by Executive Committee, Taiwan Academic Network, Ministry of Education, Taipei, Taiwan, R.O.C
JIT Editorial Office, Office of Library and Information Services, National Dong Hwa University
No. 1, Sec. 2, Da Hsueh Rd., Shoufeng, Hualien 974301, Taiwan, R.O.C.
Tel: +886-3-931-7314  E-mail: jit.editorial@gmail.com