NOTE: If you are looking for the setup guide, please navigate to OpenLiteSpeed Setup Guide.
OpenLiteSpeed-web-server is being used as a video-streaming-server. It has support for HTTP3/QUIC out of the box. The server is hosted on Google Cloud Platform (GCP).
To support the updation of congestion-window-eBPF-map i.e., CwndMap; changes have been made to the openlitespeed-source-code:
- Sets the default congestion-control-algorithm to
cubic. - A shared-variable is maintained in the memory, this stores the current-state of the kernel-congestion-window set by the
lsquicmodule specifically thelsquic_cubic.cfile. As well as logs the current-state of kernel-congestion-window, which is picked up during the testing. - The shared-variable's value is used when a cubic-connection is reset.
- During each new HTTP-request, new logic is added to test the presence of the fallback-HTTP-header. If fallback-HTTP-header is present, then update the value of kernel-congestion-window inside the
CwndMapusing the value of the shared-variable. This logic is handled by thehttpsession.cppfile.
lsquic_cubic.cpatch can be found here: github.com/vsqoe/lsquic.
httpsession.cpatch can be found here: github.com/vsqoe/openlitespeed.
To build the server first run the setup-script, this sets up the project and the prerequisites (cwndebpf, libbpf, and bpftool). Afterwards, run the build-script, this builds and installs the lsws-service.