lacp,cicso 3550,3560,帮助configuration

嘿,这一切都是从我在思科论坛上提出的问题转发,但从来没有得到有用的答复。

嘿,我试图将工作中的FreeBSD服务器转换为来自常规千兆位链接的双重缓冲链接。 我们的生产服务器在3560上。我在3550上有一个小的testing环境。我已经实现了故障切换,但是在实现速度上有麻烦。 所有服务器正在运行英特尔(em)卡。 服务器的configuration是:

BSDServer:

#!/bin/sh #bring up both interfaces ifconfig em0 up media 1000baseTX mediaopt full-duplex ifconfig em1 up media 1000baseTX mediaopt full-duplex #create the lagg interface ifconfig lagg0 create #set lagg0's protocol to lacp, add both cards to the interface, #and assign it em1's ip/netmask ifconfig lagg0 laggproto lacp laggport em0 laggport em1 ***.***.***.*** netmask 255.255.255.0 

交换机configuration如下:

 #clear out old junk no int Po1 default int range GigabitEthernet 0/15 - 16 # config ports interface range GigabitEthernet 0/15 - 16 description lagg-test switchport duplex full speed 1000 switchport access vlan 192 spanning-tree portfast channel-group 1 mode active channel-protocol lacp **** switchport trunk encapsulation dot1q **** no shutdown exit interface Port-channel 1 description lagginterface switchport access vlan 192 exit port-channel load-balance src-mac end 

因为这个交换机有100Mbit的速度端口,所以明显地将1000到100以及千兆以太网转换成FastEthernet。

使用3550上的这个configuration,我可以在两个链路上同时获得故障转移和92Mbits / sec的速度,同时连接到两台主机(经iperftesting)成功。 但是,这只是与“交换机端口中继封装dot1q”行。

首先,我不明白为什么我需要这个,我以为只是连接交换机。 这是否有其他的设置,这实际上是负责提高速度? 第二,

这个configuration在3560上不起作用。我得到了故障转移,但速度没有提高。 当我使用或不用封装线同时连接到服务器时,速度从gig / sec降到500Mbit / sec。 我应该提到两台交换机都使用source-mac负载均衡。

在我的testing中,我使用Iperf。 我将服务器(lagg box)设置为服务器(iperf -s),客户端计算机为客户端(iperf -c服务器-ip-address),因此源mac(和IP)对于两个连接都不相同。

任何想法/更正/问题将是有益的,因为演出交换机是我真正需要的lagg链接。 询问是否需要更多信息。

+1给詹姆斯angular。 大多数增加速度的以太网绑定仅影响多个连接。 一个套接字通常不会分布在多个接口上。

请注意“通常”的使用,因为我不是链接绑定专家。

802.3ad链路聚合(以及许多其他多path技术)通常按照每个stream而不是每个分组在多个链路上分配stream量,并且有充分的理由:每个stream中的传输延迟总是会有细微的差别链接。 也许一个接口具有更高效的驱动程序,或更高的中断优先级,或者电缆有点短,所以电子可以更快(严重)地到达那里。 无论这种情况如何,数据包以不同的顺序到达目的地是非常普遍的。

大量的无序数据包通常是一件坏事,因为TCP只是确认最后一个数据包是按顺序接收 。 无序数据包将导致TCP发送重复的ACK,由TCP将其解释为拥塞指示,提示TCP减慢速度(甚至在TCP快速重新传输被触发时甚至不必要地重新传输)。

当然,如果每个对话都局限于一个链接,这些都不是问题。 没有人关心来自一个会话的数据包是否被另一个会话的数据包重新sorting。

所以大多数多path实现通过在less数头字段上执行散列algorithm来select输出物理链路。 通常情况下,头部字段看起来是一个组合:

 - src-ip - src-port (or possibly another identifier if not TCP/UDP) - dst-ip - dst-port (or possibly another identifier if not TCP/UDP) - ip-proto - vlan-id 

因此,对于每个数据包,每个字段的值都被散列在一起,结果决定了将数据包发送出去的接口。 平均而言,如果有很多不同的stream量,相似的stream量将在每个链路上结束。 如果只有一个stream,那么每个数据包的所有这些字段都是相同的,因此每个数据包都在同一个链接上。

如果你有两个stream量,那么你基本上都是50/50的赌注,这两个stream量将在不同的链接上 – 这正是你所看到的。 如果运气不好,可以通过更改散列函数考虑的任何variables来再次掷骰子:例如,尝试使用不同的端口。 事实上,通过打开802.1q标记,你引入了一个vlan-id混合,显然改变了哈希的结果。

此外,没有执行散列的标准方式,这意味着如果您连接了来自不同供应商的系统(甚至是来自同一供应商的不同版本的软件),则每一方都可以以不同的方式执行散列,所以两个特定的stream程可能会结束从服务器到交换机的不同链接,但从交换机到服务器的链接是相同的。

底线是802.3ad和其他分组级多path技术必须是基于stream的,并且如果你有许多不同的stream,但是不适合于less量的大stream量则工作得很好。