#XPath-Software
A framework for varied load balancing schemes in explicit path control enabled data center network.
Currently, load balancing schemes supported in this framework include ECMP, Presto, and RPS(Random Packet Spraying. With the framework deployed in every end host, users are free to set up which load balancing scheme to use dynamically.
This framework mainly consists of two parts: a Linux user program and a Linux kernel module. The user program enables users to dynamically configure which load balancing scheme to use, and what the local path table is. These configurations will be further sent from the user program to the kernel module via Netlink. The kernel module maintains current load balance scheme, path table, and flow table. Upon capturing an IP packet by Netfilter, it identifies an end-to-end path, and uses IP-in-IP to encapsulate an outer IP header with the destination IP field set to the desired path ID.
##Getting Started Get source repository.
git clone https://github.com/HKUST-SING/XPath-Software.git
You need the kernel headers to compile it:
make
To install the kernel module:
sudo insmod xpath.ko
Configure load balancing scheme, For example, to enable ECMP:
sudo sysctl -w xpath.load_balancing=0
Configure local path table. In this case, there are two paths from the local machine to 192.168.1.51. Their path IDs are 192.168.101.12 and 192.168.101.13 respectively.
./xpath-user -i 192.168.1.51 192.168.101.12 192.168.101.13
Remove the kernel module
sudo rmmod xpath
##Usage ###Configuring path table
usage: xpath-user -i <destination_IP> <path1> [path2 ...] | -p | -c
-
-i <destination_IP> <path1> [path2 ...] : insert a destination and its paths to path table
-
-p : print path table
-
-c : clear path table
###Configuring load balancing scheme
sudo sysctl xpath.load_balancing=0|1|2
0 for ECMP, 1 for Presto, and 2 for RPS(Random Packet Spraying)
##Useful Resources
##More Information For questions, please contact Wei Bai.