不涉及
现场使用一台S6800的全10G光纤交换机,配合两台第三方服务器使用。
每一台服务器有4个10G的网卡,配置了bond0模式的聚合口,对接我司S6800-54QF交换机设备,交换机按对应方式配置了端口静态聚合, 10G口1-4口配置成聚合组1, 10G口5-8口配置成聚合组2。
然后将两台服务器相互打流测试,峰值流量带宽始终卡在 500Mbps左右,而聚合端口带宽是40Gbps的。现场进一步测试,跳过我司S6800交换机,服务器的4个网卡彼此直接连接。打流测试能跑到24Gbps左右。于是客户对我司交换机性能提出疑问。
一、从聚合模式原理分析
服务器和交换机做链路聚合采用mode=0(平衡抡循环策略),这个方式的特点为传输数据包顺序为依次传输,它存在的缺点为如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无需到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。
因为轮询发包的方式从两个端口发包经过的链路不同,终端收到的包可能就会出现乱序,这时候终端就会发送要求重传的报文的信号。
另一种聚合模式:mode=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)
特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。
外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的 是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应性。
必要条件:
条件1:ethtool支持获取每个slave的速率和双工设定;条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation;条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式。
二、从现场情况分析
下面是mode=0模式的测试情况, mode0 平衡负载模式:平时两块网卡工作,但需要在服务器本机网卡相连的交换机设备上进行端口聚合来支持绑定技术。
在 192.168.208.71 这台服务器上往192.168.208.29服务器传送文件时抓包,从抓包来看服务器经过轮询发包的形式发送数据,由于中间链路的原因确实给网络吞吐量带来了影响。
当 192.168.208.29 收到乱序的包时,会回应一个DUP ACK报文,可以看出frame为79686的报文是79683的DUP ack要求重传报文,在抓包里通过搜索tcp.analysis.out_of_order可以看到后到的报文,所以确实有乱序的包。
例如服务器1口发出了100号包到交换机1口,服务器2口发出了101号包到交换机2口,终端先收到了交换机4口发来的101号包,后收到了交换机3口发来的100号包,收到101号包的时候发现时序不对就要求重传,然后在wireshark里经过筛选可以看到重传的报文如下图所示。
综上所述,linux服务器网卡聚合mode=0模式与交换机对接会使得网络的吞吐量下降。
后续采用的bond 的模式4,并修改服务器配置参数后网卡测试读写到了38Gbps左右。
linux服务器网卡聚合与交换机对接更换为动态链路聚合方式(即mode=4)。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作