35.2. 准备 RHEL 启用 MPTCP 支持
默认情况下,RHEL 中禁用 MPTCP 支持。启用 MPTCP,以便支持此特性的应用程序可以使用它。此外,您必须配置用户空间应用程序,以便在那些应用程序默认具有 TCP 套接字时强制使用 MPTCP 套接字。
您可以使用 sysctl 工具启用 MPTCP 支持,并使用 SystemTap 脚本为系统范围的应用程序启用 MPTCP 准备 RHEL。
前提条件
安装以下软件包:
-
systemtap -
iperf3
流程
在内核中启用 MPTCP 套接字:
echo "net.mptcp.enabled=1" > /etc/sysctl.d/90-enable-MPTCP.conf sysctl -p /etc/sysctl.d/90-enable-MPTCP.conf
# echo "net.mptcp.enabled=1" > /etc/sysctl.d/90-enable-MPTCP.conf # sysctl -p /etc/sysctl.d/90-enable-MPTCP.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证内核中是否启用了 MPTCP:
sysctl -a | grep mptcp.enabled
# sysctl -a | grep mptcp.enabled net.mptcp.enabled = 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下内容创建
mptcp-app.stap文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 强制用户空间应用程序创建 MPTCP 套接字而不是 TCP 套接字:
stap -vg mptcp-app.stap
# stap -vg mptcp-app.stapCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意:此操作会影响命令之后启动的所有 TCP 套接字。在使用 Ctrl+C 中断上述命令后,应用将继续使用 TCP 套接字。
另外,要允许 MPTCP 只用于特定的应用程序,您可以使用以下内容修改
mptcp-app.stap文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在可选择的情况下,假设您想要强制
iperf3工具使用 MPTCP 而不是 TCP。要做到这一点,请输入以下命令:stap -vg mptcp-app.stap iperf3
# stap -vg mptcp-app.stap iperf3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
mptcp-app.stap脚本安装内核探测后,会在内核dmesg输出中出现以下警告Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动
iperf3服务器:iperf3 -s
# iperf3 -s Server listening on 5201Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将客户端连接到服务器:
iperf3 -c 127.0.0.1 -t 3
# iperf3 -c 127.0.0.1 -t 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 建立连接后,验证
ss输出以查看特定于子流的状态:ss -nti '( dport :5201 )'
# ss -nti '( dport :5201 )' State Recv-Q Send-Q Local Address:Port Peer Address:Port Process ESTAB 0 0 127.0.0.1:41842 127.0.0.1:5201 cubic wscale:7,7 rto:205 rtt:4.455/8.878 ato:40 mss:21888 pmtu:65535 rcvmss:536 advmss:65483 cwnd:10 bytes_sent:141 bytes_acked:142 bytes_received:4 segs_out:8 segs_in:7 data_segs_out:3 data_segs_in:3 send 393050505bps lastsnd:2813 lastrcv:2772 lastack:2772 pacing_rate 785946640bps delivery_rate 10944000000bps delivered:4 busy:41ms rcv_space:43690 rcv_ssthresh:43690 minrtt:0.008 tcp-ulp-mptcp flags:Mmec token:0000(id:0)/2ff053ec(id:0) seq:3e2cbea12d7673d4 sfseq:3 ssnoff:ad3d00f4 maplen:2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 MPTCP 计数器:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow