Я пытаюсь реализовать протоколы управления агрегацией Link, используя контроллер Opendaylight версии 0.4.0 / Berrylium.На mininet i уже работает топология сети , подобная этой, конфигурирование соединения на h1 <-> s1 (2 члена, режим 4 и интервал скорости lacp по умолчанию 30 с).На 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 вместо выходного порта.В моем эксперименте я использую простой pingtest от h1 до h2 / h3 / h4 / h5 и наблюдаю таблицу потоков в коммутаторе.На моем опыте, shen конфигурация соединения в h1 готово, запись таблицы групп, созданная на s1 с "типом", установленным в "select" с group_ID = 29129.Затем я использую идентификатор_группы, чтобы вручную добавить поток с помощью этой команды.
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 в качестве защиты уже работает.Я также наблюдаю таблицу потоков s1 и производительность, используя 2 одновременных соединения iperf (h1 <-> h2 и h1 <-> h3).В моем эксперименте он заметил, что lacp также увеличит общую пропускную способность, пропуская трафик iperf через оба члена канала для каждого соединения.
Проблема, которая меня запутывает, заключается в том, что я пытаюсь измерить время переключения.Когда я попытался отключить 1-ую ссылку связывающих участников, пинг-трафик сразу переместился на 2-ю ссылку, не дожидаясь времени ожидания 1-й ссылки.Используя lacp с медленной скоростью по умолчанию (30 с), механизм переключения обычно ожидает 3-й интервал времени ожидания (<90 с). </p>
Я ожидал, что время переключения пинг-теста будет примерно 60-90 с, как в экспериментеиспользуя рю контроллер.Но результат моего эксперимента всего за 1 с использованием наблюдения проволочной акулы.
Возможно, некоторые из вас могли бы помочь мне выяснить, почему время переключения в реализации LACP с использованием opendaylight так быстро.Это потому, что ручная надстройка использует group_ID.Или это какой-то неправильный шаг, который я сделал в ходе эксперимента.