使用bond4聚合端口未达到带宽扩容原因

背景:两台服务器应用程序之间涉及到数据传输,其中服务器A 有万兆口,而服务器B只有4个千兆口,由于需要尽可能的提升传输速率,采用服务器A ----交换机----- 服务器B 的方式进行组网

 

根据网上现有资料,最快捷的方式是使用基于LACP(链路聚合控制) 的bond方式来使服务器B的4个端口进行聚合,对外表现为聚合后的带宽,即4000Mb/s 的传输效果; 配置方法:1、 服务器B上配置 采用bond4 模式进行配置(网上有很多现成的配置步骤可自行搜索)2、交换机 配置  必须把 对应接入到服务器B上的4根网线 在交换机上对应的端口进行配置,即新建一个聚合组,并且将对应的4个端口加入到创建的聚合组中,比较重要的一点是,创建的聚合组在配置时应该允许 所有VLAN 通过,否则在聚合组中会出现几个端口没有处于被选中的状态。当聚合组中几个端口都处于被选中状态以后,基本上交换机上就被制完毕了。

最终的效果:没有达到预期制定的,上升到4000Mbps的目标,因为至始至终 服务器A 与 服务器B 之间都只有一个进程在运行,同时开启多个进程以后,两台服务器之间的总带宽可能会达到4000Mbps,但单个进程之间的传输数据不会超过一个 网口的总传输能力,即1000Mbps, 至于原因, bond4在配置时,选择的协议配置方式是基于layer3+4 的方式,由于两个进程之间的数据连接建立好以后,通过哪个网卡传输数据是基于IP和PORT的不同来区分的,对于只有一个进程的情况,服务器B认为服务器A传过来的数据都是来自同一个IP同一个PORT,因此就都往同一个网卡上丢数据了,导致总的带宽不会超过一个网卡的传输极限(1000Mbps),如果再多启动几个别的程序,或者让服务器B同时与别的服务器进行数据传输,会发现服务器B的传输总带宽确实是可以达到4000Mbps,也就是说配置的bond4还是起作用的。但这种方式并没有实现我的目标,所以就此作罢。 以上是基于我自己对搜索到的资料和实际操作后的一点理解,还望多多指教,不喜勿喷!

你可能感兴趣的:(网络)