博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

TCP incast

Posted on 2017-10-17 15:10  bw_0927  阅读(1931)  评论(0)    收藏  举报

 

看到网上有人提到这个问题,搜索一下可以找到几个pdf论文,好像还都是国人写的,

这里有文章写得不错

TCP incast: What is it? How can it affect Erlang applications?

http://www.snookles.com/slf-blog/2012/01/05/tcp-incast-what-is-it/

 

在集群通讯中,多个机器的大量tcp连接集中连接到一个机器,导致压力集中到某个交换机,交换机的frame buffer很快用光,然后交换机丢包率迅速增加,出发tcp的丢包和重传,然后碰到tcp慢启动问题“TCP slow start“。  传输速度从 952 Mbit/sec急速下降到8 Mbit/sec,然后等很久才能从tcp慢启动恢复到500Mbit/sec.

 

好像解决这个问题没有什么好的办法, 如果单纯的增加net switch 的frame buffer,可能会导致 "Buffer Bloat"问题

 

====================

IPv4/IPv6中有Unicast, multicast, anycast甚至broadcast技术。现在,随着云计算和数据中心的发展,又来了一个叫incast的技术。

 

Incast(又称TCP incast,因为是TCP协议的事情)是many-to-one的通信模式,因为云计算应用导致这种技术主要是TCP协议方式的。Incast技术主要发生在云计算数据中心,尤其是那些以scale out方式实现的分布式存储和计算应用,包括hadoop, Mapreduce, HDFS等。

 

这种情况发生在,当一个父服务器向一组节点(服务器集群或存储集群)发起一个请求时,集群中的节点都会同时收到该请求,并且几乎同时做出响应,很多节点同时向一台机器(父服务器)发送TCP数据流,从而产生了一个“微突发流”。

 

TCP incast也用于incast通信模式导致网络拥塞带来的负面影响,比如导致父服务器出端口缓冲区溢出。

 

有研究将解决思路大致划分为三类:1)增加交换机的缓冲区,但据称每端口上的1MB缓冲大约5000$;2)以太网交换机做流量控制,但容易引起交换机间中继的头阻塞;3)减少TCP的最小RTO,让有很多节点时可以维持高吞吐量。

 

目前已经提出了Data center TCP(DCTCP)的技术方案。