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

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

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

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

(1)充分利用网络资源

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

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

(2)提供可靠传输

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

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

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

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

2.MPTCP(Multipath TCP)协议介绍

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

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

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

MPTCP在设计上的挑战
(1)对应用层透明,MPTCP对于原本基于TCP的应用应该是完全透明的,即不需要应用做出任何改变,也不需要重新编译,即可像原来一样正常工作。应用程序并不知道在4层工作的其实是MPTCP。
(2)对网络中间件透明,网络上存在很多中间件,例如防火墙,NAT,这些设备往往是特制的硬件设备,即便使用MPTCP协议,应允许数据顺利的通过这些中间件设备而不需要对中间件设备做任何改变。

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

例如:我们可以同时利用手机的WIFI和4G使用两个IP来和WEB服务器建立MPTCP会话。但若WEB服务器只有1个IP地址,还可以建立MPTCP会话么?其实是可以的,WEB服务器可以使用不同的端口分别和手机的WIFI,4G建立连接。

建立MPTCP会话的过程:假设我手机选择用4G开启建立连接,过程如图3所示,
1.手机会发送一个SYN数据包给WEB服务器,这个数据包和TCP建立连接时发送的一样,只不过增加了TCP选项MP_CAPABLE字段,表明手机端支持MPTCP协议,以及一个key(用于将来继续添加子流时进行验证)。
2.服务器端回应SYN+ACK数据包同样包含TCP选项MP_CAPABLE字段,以及一个key。
3.手机再次回应ACK,此时建立了连接。

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

图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此握手。目的是保证连接安全。

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

图4. MPTCP添加子流

(编辑:核心网)

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

热点阅读