加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

数据中心内的负载均衡-MPTCP

发布时间:2018-09-22 14:31:18 所属栏目:业界 来源:SDNLAB
导读:副标题#e# 9月15日技术沙龙 | 与东华软件、AWS、京东金融、饿了么四位大咖探讨精准运维! 1. 为什么用MPTCP做负载均衡? (1)充分利用网络资源 以手机为例,手机包含两种上网方式,蜂窝移动数据网络(2G,3G,4G)和WIFI网络。我们希望在有WIFI的时候尽量

MPTCP多个子流乱序问题
当我们使用MPTCP建立多条子流传输数据时,每条子流选择的路由路径可能不同,那么路径延迟也会不同。虽然发送端按序发送数据,但接收端接收到的数据可能产生乱序。既然TCP协议可以使用TCP报文头中的序号,将数据包排序,那么MPTCP是不是同样也可以利用数据包中的序号进行排序?这样是行不通的,因为每条路径上的中间件(防火墙等)可能只有一半的数据经过,它会发现这些包的TCP序号存在间隙,中间盒可能会丢掉这些无序的数据,让TCP重传中间这些空缺的数据。

MPTCP通过增加每个子流的包序列号来解决这个问题。这个时候每个数据包有2个序列号,一个是在TCP包头中的序列号,为子流的序列号;另一个是DSN(data sequence number)为所有传输数据的序列号,用于将各个子流的数据重排。那么使用MPTCP收包,首先使用子流序列号,将各个子流接收到的数据包进行重组,然后使用DSN对各个子流报文重组。

MPTCP拥塞控制
TCP的拥塞控制机制可以根据网络链路情况动态的调整发送速率,我们不再赘述TCP拥塞控制的具体过程。那么MPTCP建立多条TCP子流传输数据,和TCP的拥塞机制有了些许差别。
(1)MPTCP的拥塞控制要保证公平性,即使用MPTCP和使用TCP占用的带宽应该是相同的。
(2)使用MPTCP的性能至少要和传统的TCP相持平,或者更好。
(3)使用MPTCP应能提供有效的负载均衡,减少数据在拥塞链路上传输。

MPTCP的每条子流的拥塞控制机制(慢启动,拥塞避免,快重传)与TCP是相同的。收到ACK时,增加拥塞窗口。发生丢包时,减少拥塞窗口的一半。不同的是子流拥塞窗口的调节方式,MPTCP中每个子流都有单独的拥塞窗口,子流可以根据各自链路状况动态的调节拥塞窗口,但要限制在整个MPTCP会话的窗口总量范围内。子流拥塞窗口的调节方式如下所示:

子流发生丢包时,减少拥塞窗口的一半。

数据中心内的负载均衡-MPTCP

MPTCP性能
图5为An overview of Multipath TCP文章中利用亚马逊EC2数据中心的40台机器内对使用MPTCP做负载均衡进行的测试,实验对比了使用传统TCP,2个子流的MPTCP和4个子流的MPTCP的性能。可以看出使用MPTCP确实在一定程度上提高了吞吐量。

数据中心内的负载均衡-MPTCP

图5. 利用亚马逊EC2数据中心内的40台机器,对数据流使用TCP以及MPTCP不同子流的吞吐量测试

3.总结

在之前的文章中,曾介绍过数据中心内使用ECMP算法进行负载均衡,通过对数据包五元组哈希为流选择路径,实现负载均衡。但使用ECMP存在诸多缺陷:
(1)过于简单,没有拥塞控制机制,因此在网络存在拥塞的情况下,使用ECMP可能会加剧路径的拥塞。
(2)在非对称网络架构下,ECMP的负载均衡效果并不好。
(3)ECMP这种基于流的负载均衡,不适合在数据中心这种老鼠流、大象流并存的环境中。

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读