作者简介:井丽南,中科院声学所国家网络新媒体工程技术中心

1. 为什么用MPTCP做负载均衡?

(1)充分利用网络资源

以手机为例,手机包含两种上网方式,蜂窝移动数据网络(2G,3G,4G)和WIFI网络。我们希望在有WIFI的时候尽量使用WIFI,这样可以节省成本,没有WIFI的时候自动切换到蜂窝移动网络,避免断连。同样在PC端,我们希望有线网卡和无线网卡可以同时上网,提高网速。但是使用TCP协议是无法实现上述功能的。

(2)提供可靠传输

MPTCP在协议栈中,位于TCP之上,利用建立TCP子流进行数据传输。TCP是面向连接的4层协议,它可以提供可靠传输,并且拥有拥塞控制机制。但是TCP的单路径传输的协议,即便网络上存在多条路径资源,也无法利用这些路径资源。因为TCP是通过四元组:{源IP,目的IP,源端口,目的端口} 唯一的确定一个连接,当四元组中的任一项发生变化时,会导致连接中断。因为应用程序使用TCP协议只能和单个四元组绑定,无法同时使用多个IP。使用MPTCP正好可以解决这个问题。

数据中心存在大量的路径资源,使用MPTCP可以更加充分地利用带宽资源,且提供可靠传输。数据中心最常使用的负载均衡算法为ECMP,通过根据数据流的五元组哈希,将这些数据均匀随机的分散到权重相等的路径上。这种随机选路负载均衡第一个问题是会产生哈希碰撞。如图一所示,红色路径与蓝色路径产生了碰撞。另一个问题是,用这种最优权重(如最短路径)的方法选出的路径,无法判断路径是否存在拥塞,很可能将流量继续发送到一个已经拥塞的链路上。而使用MPTCP进行数据中心的负载均衡,在利用多路径的同时,还可以对流量进行拥塞控制,避免产生拥塞,动态的将数据更多的发送到负载低的链路上。有效的提高负载均衡性能。

图1. 随机哈希选路易产生哈希碰撞

2.MPTCP(Multipath TCP)协议介绍

简单的说MPTCP是TCP的一个演进协议,MPTCP可以使TCP同时使用多条路径进行通信。MPTCP在协议栈上的位置如图2所示。MPTCP在2013年被正式定为标准,详细内容可参考RFC 6824 https://tools.ietf.org/html/rfc6824。

图2. MPTCP在协议栈中的位置

MPTCP在设计上的挑战

(1)对应用层透明,MPTCP对于原本基于TCP的应用应该是完全透明的,即不需要应用做出任何改变,也不需要重新编译,即可像原来一样正常工作。应用程序并不知道在4层工作的其实是MPTCP。

(2)对网络中间件透明,网络上存在很多中间件,例如防火墙,NAT,这些设备往往是特制的硬件设备,即便使用MPTCP协议,应允许数据顺利的通过这些中间件设备而不需要对中间件设备做任何改变。

MPTCP会话建立过程

MPTCP会话通过建立多个子流来实现同时使用多条路径传输数据,MPTCP子流的建立类似于TCP建立连接的过程。这些子流类似于正常的TCP连接,通过三次握手建立连接,四次挥手关闭连接。但这些子流都是绑定到一个已有的MPTCP会话上的。发送端的数据可以选择任意的子流进行传输。

建立MPTCP会话的过程:假设我手机选择用4G开启建立连接,过程如图3所示,

1.手机会发送一个SYN数据包给WEB服务器,这个数据包和TCP建立连接时发送的一样,只不过增加了TCP选项MP_CAPABLE字段,表明手机端支持MPTCP协议,以及一个key(用于将来继续添加子流时进行验证)。

2.服务器端回应SYN+ACK数据包同样包含TCP选项MP_CAPABLE字段,以及一个key。

3.手机再次回应ACK,此时建立了连接。

图3. MPTCP建立连接

此时4G和WEB服务器建立了连接,手机和WEB服务器可以通过这个路径传输数据,那么如何添加WIFI和WEB服务器的路径呢?要想增加WIFI和WEB服务器的路径,首先要用WIFI和WEB服务器实现完整的建立连接过程,才可以使用WIFI与WEB服务器通信,如图4所示。这次连接和第一个4G与WEB服务器建立的连接是有区别的。

(1)此时的SYN数据包中携带的TCP选项是MP_JOIN,并且向WEB服务器提供足够的信息,说明其要加入的MPTCP会话,并确认它是安全的。其中token是前面4G与WEB服务器建立连接的key的哈希。rand是一个随机数,HMAC是rand的哈希。

(2)与第一次建立连接不同的是,这次要进行4此握手。目的是保证连接安全。

图4. MPTCP添加子流

实际上,子流在MPTCP会话期间是可以动态的增加或删除的,而且不会影响应用数据的传输。比如手机没有了WIFI信号,那么数据可以继续使用4G进行传输,而不会造成应用中断。

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性能

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

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

3.总结

在之前的文章中,曾介绍过数据中心内使用ECMP算法进行负载均衡,通过对数据包五元组哈希为流选择路径,实现负载均衡。但使用ECMP存在诸多缺陷:

(1)过于简单,没有拥塞控制机制,因此在网络存在拥塞的情况下,使用ECMP可能会加剧路径的拥塞。

(2)在非对称网络架构下,ECMP的负载均衡效果并不好。

(3)ECMP这种基于流的负载均衡,不适合在数据中心这种老鼠流、大象流并存的环境中。

本文介绍了使用MPTCP协议做负载均衡,通过建立多条TCP子流的方式使用多条路径传输数据。MPTCP可以提供有效的拥塞控制机制,而且切割数据流为多个子流解决,避免大象流这种流量大的数据流在一条链路上传输。其实,我们还可以对每条子流使用ECMP算法,利用哈希随机选择路径,提高负载均衡效果。

不过MPTCP也不是一个完美的负载均衡方案,MPTCP存在以下几个缺点:

(1)无法进行全局路径感知

如图6所示的网络拓扑中,L0到L1的流,若只根据L0下一跳的链路状态进行负载均衡,那么很可能在S2-L1这段链路上发生拥塞。

图6. 网络拓扑示例

(2)部署困难

要想使用MPTCP协议,需要在更改通信双方的协议栈,增加MPTCP协议,这为扩大MPTCP的使用范围带来的困难。

参考文献:

[1]. Ford A, Raiciu C, Handley M, et al. Tcp extensions for multipath operation with multiple addresses, January 2013[J]. RFC6824.

[2]. Bonaventure O, Handley M, Raiciu C. An overview of Multipath TCP[J]. ; login:, 2012, 37(5): 17.

[3]. Raiciu C, Barre S, Pluntke C, et al. Improving datacenter performance and robustness with multipath TCP[C]//ACM SIGCOMM Computer Communication Review. ACM, 2011, 41(4): 266-277.

【投稿】

欢迎SDN、NFV、边缘计算、SD-WAN、5G 网络切片等网络方向的观点类、新闻类、技术类稿件。

投稿邮箱:pub@sdnlab.com

咨询:2427151142  昵称 白白

详情请参考:

为了给各位小哥哥,小姐姐们带来更好的阅读感受,现在发起SDNLAB文章选题征集,如果大家对什么话题感兴趣,可以文末踊跃发言。期待各位的参与!

数据中心服务器均衡,数据中心内的负载均衡-MPTCP相关推荐

  1. web服务器和应用服务器的区别以及负载均衡---学习笔记

    一.区别: web服务器可以解析(handles)http协议.当web服务器接收到一个http请求(request),会返回一个http响应 (response),例如送回一个html页面.为了处理 ...

  2. IIS的ARR搭建本地服务器的不停机更新(负载均衡,分布式服务器,集群)

    IIS的ARR搭建本地服务器的不停机更新(负载均衡,分布式服务器,集群) 准备 2修改Host文件,添加映射. 路由规则的添加 程序文件的准备 结尾 准备 在IIS上安装Web平台安装程序,一般期初是 ...

  3. Nginx搭建部署Web服务器并与NFS结合搭建负载均衡服务器

    Nginx搭建部署Web服务器并与NFS结合搭建负载均衡服务器 一.搭建NginxWeb服务器     此种方式是用yum安装Nginx,为保证安装成功需在安装之前提前安装epel扩展源.     用 ...

  4. 有软件负载均衡,也有硬件负载均衡,选择哪个?

    笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道"墙",将请求分发到web服务器后,web服务器上的Nginx再进行处理,静 ...

  5. 什么是负载均衡,为什么要做负载均衡?

    大家好,我是IT修真院武汉分院第13期的学员石奥林,一枚正直纯洁善良的JAVA程序员 今天给大家分享一下,修真院官网JAVA任务6,深度思考中的知识点--什么是负载均衡,为什么要做负载均衡? PPT链 ...

  6. 负载均衡技术(一)———负载均衡技术介绍

    此文已由作者张小刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 本文主要是对负载均衡技术进行一个简单的介绍,并结合在实际生产环境中负载均衡技术的应用情况,让大家对负载均衡技 ...

  7. 四层和七层负载均衡的特点及常用负载均衡Nginx、Haproxy、LVS对比

    一.四层与七层负载均衡在原理上的区别 图示: 四层负载均衡与七层负载均衡在工作原理上的简单区别如下图: 概述: 1.四层负载均衡工作在OSI模型中的四层,即传输层.四层负载均衡只能根据报文中目标地址和 ...

  8. 客户端负载均衡?? 服务端负载均衡??

    我们用一张图来描述一下这两者的区别 这篇文章里面不会去解释nginx,如果不知道是什么的话,可以先忽略, 先看看这张图 服务端的负载均衡是一个url先经过一个代理服务器(这里是nginx),然后通过这 ...

  9. 灾备中心服务器辐射,数据中心和灾备中心的相同点以及不同点

    环境及选址要求 相同点: 远离加油站等易燃易爆建筑物 远离粉尘.强振动源.强电磁辐射源 交通通信方便.配套设施齐全.安全可靠.自然环境清洁 地质条件良好,不会发生地震.洪水.内涝.滑坡等 机房不应设置 ...

最新文章

  1. Android studio 使用Gradle发布Android开源项目到JCenter 总结
  2. 基于nginx环境部署nagios
  3. java main启动spring_gradle 搭建springMVC项目,main函数启动
  4. IT經理出招 電腦耗電減少
  5. RabbitMQ入门:发布/订阅(Publish/Subscribe)
  6. EXCHANGE 2013 一例证书故障
  7. Postman安装与入门简单教程
  8. matlab gui串口通信,Matlab GUI上位机界面实现串口通信
  9. PostgreSQL11.2-CN-v0.1中文手册.chm
  10. $(this).bind(change,itemno_change);
  11. python 重定向 网址错_Python URL重定向问题
  12. IP地址、网关地址、子网掩码地址
  13. Dubbo-Adaptive实现解析
  14. 已成功与服务器建立连接,但是在登录前的握手期间发生错误
  15. 可视化展示——实现论文引用关系动图展示
  16. 第一次使用linux电脑,计算机基础与Linux初次亲密接触第一天(马哥)
  17. 三星I909破解使用GPRS上网教程
  18. cad注释比例和打印比例不一样_CAD注释性比例该如何设置?看完你就懂了
  19. 一个破解共存版微信个破解共存版微信
  20. 【贪心 / 线段树模拟费用流增广】BZOJ4977 [Lydsy八月月赛] 跳伞求生

热门文章

  1. 提升企业计划能力的必备指南:《SAP Press - SAP Integrated Business Planning Functionality and Implementation》
  2. 滴滴弓峰敏:网络安全问题危及每一个人
  3. APIJSON 自动化接口和文档的快速开发神器
  4. 护肤品集团与品牌大全(18-06-21)
  5. UE4seq过场动画混合到玩家视角
  6. 基于Amazon Echo 和 Raspberry Pi 的自动窗帘控制
  7. QSettings用法介绍
  8. JAVA及数据库中的关键字(常用)
  9. 快速设置CodeBlocks
  10. 学习cad之后体会心得