>>返回主页
Mellanox亚太及中国区解决方案营销总监 张辉 无损和有损混合网络使用的关键技术

2018-10-17 11:15

张辉.jpg

  非常感谢ODCC这么好的平台,有这个机会就日常工作中一些总结以及与ODCC合作新技术中的一些收获跟大家分享,有些是我们自己的观点,未必全面,有问题大家共同讨论。

  早上来的时候车出了一点事故,还想着能不能赶得上,有损网络、无损网络怎么和现实结合起来?有损网络和无损网络跟现实的交通情况结合,方式新颖一些,尽可能帮助大家容易理解一些,使用过程中和实际过程中能够结合起来,不同场景下用有损网络、无损网络,什么时候用?如何使用?如何帮着大家根据自己的业务应用场景怎么搭配使用,最终得到比较好的效果。

  昨天上午主会场有几家都提到RDMA。RDMA从互联网公司开始到主要的IT厂商都大规模的采用,比如BAT、华为,昨天给大家讲了很多案例。随着新的介质提升,未来新的技术,延时的需求要求越来越高,对网络的需求。TCP/IP依赖于内核CPU,意味着延迟不会太低。RDMA bypass core,offload CPU,极大的释放CPU资源、降低延迟,从从互联网开始到一般的企业用户已经在逐步部署,这是我们看到的趋势。

  为什么需要拥塞控制,现实当中多打一的情况,多端口同时访问一个硬件资源,典型的资源永远比需求要少。25G、100G,最终都上100G网络甚至更高速的网络,访问的资源也是100G,这时候会出现三打一,接受端只能接受100G的最大带宽,剩下的200G流量只能丢掉,即所谓的丢包,再重传。重传的结果还是一样,2/3的数据被丢掉,这个情况一直延续,并且情况越来越严重。随着带宽的增长,越来越严重。

  使用拥塞控制以后虽然每个发起端都没有跑满,但是保证每个链路都是通的了,没有数据包丢失,这样的效果是不是会更好一些?怎么去控制?这是一个简单的示意图。一旦缓存满了,就暂停一下,别发了,类似红绿灯,十一长假在高速公路上上,如果有一个机制告诉大家,高速拥堵了别出门了了,至少大家不会堵在路上,告诉发起端暂停一下,这时候我处理完再告诉发起端,高速不拥堵了,可以继续上路。这是典型的流控。

  PFC不错,但是有没有其它问题?一旦拥堵,这时候我发送端发不了,把所有的流暂停。刚才提到ABC往D端发,A到B到C甚至B到C之间通信也停了,这时候ABC链路拥堵吗?不拥堵,这是PFC所谓的限制或者不太完美的地方,一旦采取控制就暂停所有的流,这是PFC的传播问题。

  PFC暂停,类似要么红灯要么绿灯,要么通行,要么不通行,速度控制不了。ECN可以解决另外一个技术问题,暂停不暂停我控制不了,我能保证尽可能让每个车辆或者每个数据相对公平一些,这样的话,同时不超过百分之百。让每个流分33%,其中一个流1%分给管理,至少我的信息要管理通信顺畅,ECN保证我的公平性问题。这里面用标示位解决这个问题,00没有ECN的能力,不是ECN的包控制不了你,01、10代表是ECN的包,11代表拥堵状态。RED控制我保障相对公平做这些工作,比方你的数据流比较大,我多控制你,解决问题主要矛盾。我们往外走的话,往南走去京石高速,来的全是五环方向的车,六环其它路来的是少量的车,有没有必要控制其它旁路来的车?90%五环来的车。五环车的速度慢一点才有效果,其它三条来的车只占了10%,全控制住一点不放也只占10%而已,这里面RED流越长,被控制的概率越大,降速效果更明显。

  拥塞控制可以硬件实现也可以软件实现。我们这边看到的结果和是实测的结果包括在用户端里面看的结果,基于硬件的拥塞控制效果最好的状态。有些东西不太方便展示出来,基本上一千倍的差距,基于软件和硬件拥塞控制的效果得到的结果是一千倍甚至几千倍的差距,我们得到一个结论,基于硬件的控制效果最好。

  这里面有一个分类的问题,怎么控制这个流?打标签,七个优先级,RoCE优先级3,这里的网络可以用有损也可以用无损,对于CNP优先级6最高,不管你数据流是不是拥堵,但是保证我的管理一定是优先级最高的,我打一个标签得通知发起端赶紧降速,这个优先级最高,其它可以根据自己的应用做相应的优先级设置。

  实验压力测试数据分享,模式大概分几种,多对一、多对多,这里面没有一对一,一对一意义不太大,流实际的应用场景不会有。RoCE无损网络、RoCE有损网络,实际生产环境和应用环境比较类似,特别是对新技术接受的直接上RoCE并采用最新的智能网卡,但是更多的情况既有原有的TCP/IP,有些高性能应用比如像人工智能这类比如大数据可能会需要对网络整个架构都是最好的,网络协议用最好的,管理也要用最好的管理。测试的选项比较多,我只抽了几个相对典型的数据跟大家做分享。

  小规模集群无损网络,16个主机对一个主机,所谓16打1。无损网络里面的数据,总吞吐量接近线性,比较稳定的状态。每个发起端,每个主机占比6%,每个发起端均衡,保证每个发起端基本在6%左右,这样总的带宽100%。再就是暂停Pause,在最开始的时候会有一个暂停,但是很快下来,平稳运行,带宽很好,没有数据包的丢失,只有特别特别短暂的暂停,这是小型的无损网络。发起端还是16:1,有16个发起主机,每个还是64QPs,情况类似或者有损无损差异不太大。这里面总带宽也不错,每个发起端不同,但是有特别少量的丢包,这是在小型网络里面,整体效果还不错,特别少量的丢包,也是初期的时候刚上压力的时候,调整了带宽分配,调整过程中少量包丢失,但是很快调整过来,打满。

  混合流,既有RoCE又有TCP/IP,这两个流加在一起百分之百,你的RoCE为什么波动?TCP/IP一波动RoCE波动,但是始终保证百分之百跑满没有问题,RoCE每个线重在一起,公平性很公平,在TCP环境里面不能公平分配和不稳定性,在RoCE即使在混合环境里面公平性也能得到保证。

  大型网络多对一,每个带宽都能达到很好,每个发起端和暂停的情况,无损网络里面公平性体现,没有丢包。多对多情况下无损网络曲线相当漂亮,每个sender带宽接近重合,有损网络有波动,但是一旦跑下来以后,效果也还可以,但是会有少量丢包或者整个系统不稳定,有抖动的情况,整体带宽来讲表现得比较好。。

  简单总结一下:PFC只做红绿灯,你的速度能不能持续跑起来是不是平均分配不保障,但是保障你不丢包。ECN保证尽可能公平在速度,但不保证你是全速,但是保证你是相对公平地在跑,在不同的网络环境里面使用ECN和PFC的搭配不太一样, 实际配置中大型的互联网用户回PFC和ECN同时配合使用。

  时间关系就交流到这儿,谢谢大家!

0