Welcome to the kQUIC project! This kernel-based QUIC transport protocol is tailored for IoT environments and was developed in SIOTLAB at Santa Clara University by Puneet Kumar (Ph.D. student) under the guidance of Professor Behnam Dezfouli.
The kQUIC project enhances the Linux kernel to integrate QUIC as a transport protocol, making it suitable for IoT systems. The implementation provides efficient handling of QUIC connections directly within the kernel, enabling robust and high-performance networking for IoT applications.
- QUIC in the Kernel: Implements QUIC as a native transport protocol using
IPPROTO_QUIC
. - Seamless Integration: Supports standard socket operations (
read
,write
,msghdr
struct association). - Application Multiplexing: Provides enhanced support for application ID management through ancillary data (
struct msghdr *msg
andcmag_type
fields).
main tree:
|
|----include
| |
| |-- net
| |-- uapi
|
|----net
| |
| |-- ipv4
| |-- netfilter
git clone https://github.com/torvalds/linux.git
- Add the necessary QUIC-related files to the source tree, as per the files/directories mentioned in the source tree.
- Update the Makefile to include the QUIC implementation.
- Compile the kernel:
make -j$(nproc) sudo make modules_install sudo make install
Reboot your system and select the newly compiled kernel.
-
Socket Operations:
- Use
IPPROTO_QUIC
as the protocol type during socket creation. - Socket operations (
read
andwrite
) function similarly to UDP or TCP sockets.
- Use
-
Application Multiplexing:
- Associate the
msghdr
struct with the socket APIs to manage application-specific data.
- Associate the
-
Ancillary Data Handling:
- Use
struct msghdr *msg
and thecmag_type
field to specify the application ID.
- Use
We welcome contributions to enhance and optimize kQUIC! Please submit a pull request or open an issue to discuss your ideas.
Developed by Puneet Kumar, Santa Clara University, under the mentorship of Professor Behnam Dezfouli at SIOTLAB.