我已经在一台机器上安装了MCTCP,并在https://amiusingmptcp.com这给出了积极的结果。现在,当我确实iperf -c multipath-tcp.org
像他们说的那样这里我只看到一个连接:
root@user:~# netstat -m
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State Local Token Remote Token
mptcp 0 602616 streaming.local:47914 mptcp.info.ucl.ac.:5001 ESTABLISHED 2590462875 3979247341
iperf 显示相同的一个连接:
root@user:~# iperf -c multipath-tcp.org
------------------------------------------------------------
Client connecting to multipath-tcp.org, TCP port 5001
TCP window size: 512 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.11 port 47914 connected with 130.104.230.45 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.3 sec 6.75 MBytes 5.48 Mbits/sec
我应该做什么来在多个子流之间划分数据?
编辑:
为了使 MPTCP 工作,我只需安装 Debian Wheezy 并下载他们为该发行版预编译的软件包。
我尝试了这个sysctl
调整;
net.mptcp.mptcp_path_manager=fullmesh
,ndiffports
和binder
(?)
net.mptcp.mptcp_scheduler=roundrobin
和default
net.ipv4.tcp_congestion_control = cubic
和olia
我每次进行这些更改时都没有重新启动,但我认为这不是强制性的,因为当我更改为 时binder
,binder registered
中会出现一条消息dmesg
。
还安装了他们的工具并制作了:
ip link set dev eth0 multipath off
ip link set dev wlan0 multipath on
ip link set dev wwan0 multipath on
顺便说一句,eth0
已拔掉电源,但以防万一。
的输出ip route
:
default via 192.168.1.1 dev wlan0 proto static
169.254.0.0/16 dev wwan0 scope link metric 1000
192.168.0.0/24 dev wwan0 proto kernel scope link src 192.168.0.100
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.11
编辑2:
我已经移除了 3g 路由器并通过以太网和 WiFi 连接到我的普通路由器,所以我现在有 2 个互联网接口:wlan0
和eth2
。我还添加了名为的自动路由脚本这里在底部(mptcp_up 和 mptcp_down),因此路由更改为:
default via 192.168.1.1 dev eth0 proto static
169.254.0.0/16 dev eth0 scope link metric 1000
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.217
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.11
但连接仍然不会产生多个子流。iperf
并且netstat -m
仍然返回 1 个连接。
注意:我删除了 3g 路由器并添加了 eth0 连接,因为路由器给我带来了问题,但我仍然有多个接口来测试子流。
答案1
您尚未共享足够的信息来表明您的计算机具有双重连接,而该双重连接又可用于两个不同的 MPTCP 通道。但由于我相信您试图提供足够的信息,我可以推断您不知道先决条件,因此我想我可以给您一个答案。我实际上并没有使用 MPTCP,其他人可能会给你更好的答案。
当一个端点可以通过不同的路由与另一个端点通信时,多路径 TCP 非常有用。在您的情况下,您似乎建议您的计算机是可以通过多个路由到达的端点,但我不相信您的计算机已设置为实际上可以以这种方式工作。
首先,您需要使用基于源的路由。中给出了一些示例NetworkManager 支持创建基于源的路由配置的功能请求。其次,如果您的计算机具有隐藏在伪装 (NAT) 路由器后面的专用网络地址,则很难从外部访问您的计算机。 MPTCP 在连接到 Internet 的设备上运行良好,但不适用于通过伪装路由器连接到连接有限的专用网络的设备。
如果您只是想尝试,那么使用一个连接通过两个不同的路由到达支持 MPTCP 的端点可能会更好。但是,如果您想将连接跨越到您这边的两个不同连接,您可能首先必须获得两个真实的每个具有一个公共 IPv4 或 IPv6 地址的 Internet 链接。
你说有些网站表明你有MPTCP支持。您应该向这些网站查询这到底意味着什么。可能只是您的系统向他们报告 MPTCP 支持,但没有说明您可以启动的通道数量。也可能是您可以通过一个界面进行通信,但如果可以通过多个地址访问该网站,则可以使用多个渠道。