最近公司在做服务器侧做Bond0(负载模式),而交换机侧不做聚合的测试。因为我司的业务output方向流量与input相差极大,只需服务器做bound0使得output流量负载均衡即可。

    

    现场组网:交换机(2台做虚拟化)----服务器(单台双网卡bound0)


    在随后的测试观察中,服务器侧2块网卡output流量均衡,input流量集中在1块网卡,交换机侧转发正常,STP无阻塞。


     但问题在于交换机侧ARP表项只对应一个接口,MAC地址表项对应2个接口。我一直纠结于ARP表为啥不漂移,来回的覆盖。

      

     在查阅了bond0原理后,得出一个可以解释的原因:服务器2块网卡做Boun0后数据包是轮询负载的,在收到交换机发出的广播ARP请求报文后肯定会回复单播的响应报文,这时根据bond0的轮询机制,轮询到哪个接口就从哪个接口转发,交换机侧也就从这个接口学习到了对应的ARP。ARP老化时间为20分钟,所以每20分钟更新一次,根据轮询的接口更新ARP对应的接口。

     

     同网段中,服务器收到的MAC是对方服务器的bond口MAC,所以发往对方的流量对方bond接口会进行入方向负载;在跨三层时,走的交换机的ARP表对应的是服务器的物理口,所以入方向流量不会进行负载。

     

     所以服务器侧做Bond0,交换机侧不做聚合是可以的。对应的应用场景就是业务上下行流量相差极大的情况下使用或同网段交互流量。