1、第三届 eBPF开发者大会中国 西安BPF on MPTCP麒麟软件 唐葛亮geliangkernel.org目录01概览02Support for mptcp_sock03Force to MPTCP05Packet scheduler06Path manager04遍历mptcp subflow 麒麟软件研发技术专家麒麟软件研发技术专家 LinuxLinux内核内核MPTCP(Multipath TCP)MaintainerMPTCP(Multipath TCP)Maintainer之一(另外两位是之一(另外两位是Matthieu BaertsMatthieu Baerts和和Mat Ma
2、rtineauMat Martineau)openEuleropenEuler技术委员会委员(技术委员会委员(20252025-20262026届)届)20152015年开始贡献年开始贡献LinuxLinux内核,累计贡献内核,累计贡献900+900+补丁(华人补丁(华人TOP 13TOP 13)20192019年开始专注于年开始专注于MPTCPMPTCP网络协议栈开发,是该模块的核心开发者,网络协议栈开发,是该模块的核心开发者,TOPTOP贡献者,贡献者,ReviewerReviewer和和MaintainerMaintainerGeliang TangMPTCP介绍 多路径多路径TCPTC
3、P或或MPTCPMPTCP是标准是标准TCPTCP的扩展,在的扩展,在RFC 8684RFC 8684(TCP Extensions TCP Extensions for Multipath Operation with Multiple Addressesfor Multipath Operation with Multiple Addresses)中描述)中描述(MPTCP RFCMPTCP RFC也由我们维护)也由我们维护)它允许设备同时使用多个接口通过一条它允许设备同时使用多个接口通过一条MPTCPMPTCP连接来发送和接收连接来发送和接收TCPTCP数数据包据包 MPTCPMPTCP
4、可以聚合多个接口的带宽或优先选择延迟最低的接口,如果一可以聚合多个接口的带宽或优先选择延迟最低的接口,如果一条路径发生故障,它还允许故障转移,并且流量会无缝地重新注入其条路径发生故障,它还允许故障转移,并且流量会无缝地重新注入其他路径他路径MPTCP性能演示iperf带宽测试rsync文件传输测试Valkey over MPTCP为为iperfiperf、rsyncrsync和和ValkeyValkey添加添加MPTCPMPTCP原生支持原生支持fd=socket(AF_INET(6),SOCK_STREAM,fd=socket(AF_INET(6),SOCK_STREAM,IPPROTO_M
5、PTCPIPPROTO_MPTCP)MPTCP BPF selftests目录01概览02Support for mptcp_sock03Force to MPTCP05Packet scheduler06Path manager04遍历mptcp subflow最初由最初由NicolasNicolas开发,开发,WIPWIP,20222022年初本人接手年初本人接手MPTCP BPFMPTCP BPF开发开发BPF:Support for mptcp_sockBPF:Support for mptcp_sock主要实现主要实现bpf_skc_to_mptcp_sockbpf_skc_to_m
6、ptcp_sock函数,从子链路获取函数,从子链路获取mptcp_sockmptcp_sock信息信息目录01概览02Support for mptcp_sock03Force to MPTCP05Packet scheduler06Path manager04遍历mptcp subflowBPF:Force to MPTCP在不修改应用的情况下,使用BPF将原先使用TCP通信的应用转换成使用MPTCP通信目录01概览02Support for mptcp_sock03Force to MPTCP05Packet