MPTCP(一) :MPTCP概览】的更多相关文章

背景      随着技术的发展许多设备具有了多个网络接口,而TCP依然是一个单线路的协议,在TCP的通信过程中发端和收端都 不能随意变换地址.我们可以利用多个网络接口的这一特性来改善性能和有效冗余.例如:你的手机同时连接 WIFI信号和3G信号的时候,如果WIFI关掉,使用WIFI进行的TCP连接就会断开,而不能有效利用3G网络继续收发数据. 而Multipath TCP可以在一条TCP链接中包含多条路径,避免上述问题出现.   MPTCP简介      MPTCP允许在一条TCP链路中建立多个…
最新的wireshark可以直接识别出mptcp. Wireshark is a widely used network analyzer that can capture network traffic, save the captured packets (*.pcap) for later analysis and most importantly helps with analyzing such packet traces. Wireshark supports many protoc…
https://datatracker.ietf.org/doc/rfc8684/?include_text=1 TCP Extensions for Multipath Operation with Multiple AddressesRFC 8684   Document Type   RFC - Proposed Standard (March 2020; No errata) Obsoletes RFC 6824 Was draft-ietf-mptcp-rfc6824bis (mptc…
之前用的发包方式是发送大文件,用NC监测. 今天改了另外一种发包方式iperf,简单记录下. iperf发包,具体方法: 1.在终端中运行拓扑脚本: 运行py脚本:sudo python topy.py -p [path_manager] -s [scheduler] -f [subflows_num] 参数含义: ·path_manager:设置MPTCP内核路径管理模式,有default.fullmesh.ndiffports和binder ·scheduler:设置MPTCP内核调度程序,…
简述      MPTCP的拥塞控制对TCP的拥塞控制的线性增加阶段进行了修改,而慢启动,快速重传. 快速恢复都没有改变.每条子路径拥有自己的cwnd,MPTCP的拥塞算法主要关心cwnd的改变.   拥塞算法设计原则 MPTCP的Throughput 要达到MPTCP中所有子路径中最好的一条路径 MPTCP应该和普通TCP一样从共享资源中获得相同资源 MPTCP中的流量将从拥塞的子路径转移到不拥塞的路径.   算法理解      MPTCP的各个子路径运行着正常的TCP,因此直观的我们可以在每…
简述      TCP使用定时器函数tcp_retransmit_timer进行数据重发,MPTCP需要重发数据的时候, 不仅仅在原路径发送数据,而且会在另外一条子路径进行重发.这样考虑的原因是: 考虑网络中间件设备的影响, 保证子路径上数据序列号的完整性.目前的版本0.89依然如此实现, 以后应该会优化.   内核实现      MPTCP的结构如下图所示:   如上图所示:每一个slave subsock 和 master subsock实际上维持着一个正常的TCP链路,因此,他们都具有 重…
简述:      在TCP协议中影响数据发送的三个因素分别为:发送端窗口值.接收端窗口值和拥塞窗口值. 本文主要分析MPTCP中各个子路径对接收端窗口值rcv_wnd的处理.   接收端窗口值的初始化      根据<MPTCP 源码分析(二) 建立子路径>中描述服务端在发送完SYN/ACK并接收到ACK的时候建立新的sock. 在内核实现中,针对连接请求分为两个步骤处理: SYN队列处理:当服务端收到SYN的时候,此连接请求request_sock将被存放于listening socket的…
简述:      MPTCP在发送数据方面和TCP的区别是可以从多条路径中选择一条 路径来发送数据.MPTCP在接收数据方面与TCP的区别是子路径对无序包 进行重排后,MPTCP的mpcb需要多所有子路径的包进行排序.查看图1可知. +-------------------------------+ | Application | +---------------+ +-------------------------------+ | Application | | MPTCP | +----…
简述:      支持MPTCP的链路中存在多条子路径,因此在发送数据的时候需要选择最优路径来进行操作. MPTCP利用内核通知链对MPTCP中各子路径进行增加路径.删除路径.修改路径优先级的操作.MPTCP根据 相应的策略进行路径选择.   路径选择的代码实现      路径选择的关键在于从多个子路径中选择其中一个进行数据的发送.此过程通过下面的函数实现: of static struct sock *get_available_subflow(struct sock *meta_sk, st…
简述      MPTCP在进行三次握手之后,客户端和服务端会进行地址信息的交换,让对方知道彼此未用的地址信息. 当客户端知道服务端的地址后就可以建立其他子路径.三次握手和建立子路径的过程如图1:                                        图1 关于Token.随机数R.以及HMAC(Hash-based Message Authentication Code)的详细解释可以阅读参考文献[1].   MPTCP的内核实现:      这里我们主要关注建立子路径…