我正在尝试使用Opendaylight控制器版本0.4.0 / Berrylium实现链接聚合控制协议。 在mininet上,我已经像这样运行network topology,并在h1 <-> s1上配置了绑定(2个成员,模式4和默认的lacp-rate间隔30s)。 在opendaylight上,我已经在运行karaf和实现LACP所需的一些功能。 这是我的网络拓扑脚本。
from mininet.topo import Topo
class MyTopo( Topo ):
"Simple topology example."
def __init__( self ):
"Create custom topo."
# Initialize topology
Topo.__init__( self )
# Add hosts and switches
h1 = [self.addHost('h1')]
h2 = [self.addHost('h2')]
h3 = [self.addHost('h3')]
h4 = [self.addHost('h4')]
h5 = [self.addHost('h5')]
s1 = [self.addSwitch('s1')]
# Add links from switch to host
self.addLink('s1','h1')
self.addLink('s1','h1')
self.addLink('s1','h2')
self.addLink('s1','h3')
self.addLink('s1','h4')
self.addLink('s1','h5')
topos={'mytopo':( lambda:MyTopo() )}
这是H1中的绑定配置脚本。
nano /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bonding mode=4
modprobe bonding
ip link add bond0 type bond
ip link set bond0 address 00:00:00:00:05:06
ip link set h1-eth0 down
ip link set h1-eth1 down
ip link set h1-eth0 address 00:00:00:00:00:11
ip link set h1-eth1 address 00:00:00:00:00:12
ip link set h1-eth0 master bond0
ip link set h1-eth1 master bond0
ip addr del 10.0.0.1/8 dev h1-eth0
ip addr add 10.0.0.1/8 dev bond0
ip link set bond0 up
cat /proc/net/bonding/bond0
按照用户指南所述,将在OpenFlow开关(s1)上创建一个对应的组表条目,并将“类型”设置为“选择”以执行LAG功能。 然后,要在交换机上应用LAG功能,应将流配置为将操作设置为GroupId而不是输出端口。 在我的实验中,我使用从h1到h2 / h3 / h4 / h5的简单pingtest并观察了开关中的流表。 在我的实验中,在完成h1的绑定配置后,在s1上创建了group-table-entry,其中“ type”设置为“ select”,并且group_ID = 29129。然后,我使用group_ID通过此命令手动添加流。
ovs-ofctl -O Openflow13 add-flow s1 dl_type=0x0806,dl_dst=00:00:00:00:05:06,actions=group:29129
ovs-ofctl -O Openflow13 add-flow s1 dl_type=0x0800,dl_dst=00:00:00:00:05:06,actions=group:29129
作为保护的lacp功能已经起作用。我还通过同时使用2个iperf连接(h1 <-> h2和h1 <-> h3)来观察s1流量表和吞吐性能。在我的实验中,它观察到lacp也会通过使iperf流量流经每个连接的两个链接成员来增加总吞吐量。
让我感到困惑的问题是当我试图测量切换时间时。当我尝试降低绑定成员的第一个链接时,ping通信量直接移到第二个链接,而无需等待第一个链接的超时时间。使用具有默认慢速速率(30s)的lacp,切换机制通常会等待第三个超时时间间隔(<90s)。
我认为pingtest的切换时间大约为60-90s,就像在使用Ryu控制器的实验中一样。但是我的实验使用Wireshark观测结果仅需1秒。
也许有些人可以帮助我找出为什么使用opendaylight的LACP实现中的切换时间如此之快。那是因为使用group_ID的手动添加流程。还是我在实验中做了一些错误的步骤。