Пинг между выключателем и выключателем

В данной топологии только s3 и s4 являются переключателями OFS и другими переключателями не-OF. Для коммутаторов не-OF я создал подкласс L2_switch в коммутаторе суперкласса, который похож на LinuxBridge(nodelib.py) с включенным stp.

                           h2
                           |
                           s7
                           |
                           s3
                         /    \
                        /      \
h1--------s1-----------s2      s5----------h3
                        \      /
                         \    /
                           s4
                           |
                           s6
                           |
                           h4

Здесь только h2 и h4 могут пинговать друг друга. Другие хосты не могут пинговать. Зачем?

Но, переключив s2 и s5 на OF-Switch, все хосты могут пинговать друг друга. Зачем?

Вот мой код:

def myNetwork():

net = Mininet( topo=None,
               listenPort=6633,
               build=False,
               ipBase='10.0.0.0/8')

info( '*** Adding controller\n' )
c0=net.addController(name='c0',
                  controller=RemoteController,
                  ip='192.168.56.104',
                  protocol='tcp',
                  port=6633)

info( '*** Add switches\n')
s3 = net.addSwitch('s3', cls=OVSKernelSwitch)
s5 = net.addSwitch('s5', cls=L2_switch) #OVSKernelSwitch)
s7 = net.addSwitch('s7', cls=L2_switch) #OVSKernelSwitch)
s2 = net.addSwitch('s2', cls=L2_switch) #OVSKernelSwitch)
s4 = net.addSwitch('s4', cls=OVSKernelSwitch)
s1 = net.addSwitch('s1', cls=L2_switch) #OVSKernelSwitch)
s6 = net.addSwitch('s6', cls=L2_switch) #OVSKernelSwitch)

info( '*** Add hosts\n')
h3 = net.addHost('h3', cls=Host, ip='10.0.0.3', defaultRoute=None)
h4 = net.addHost('h4', cls=Host, ip='10.0.0.4', defaultRoute=None)
h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)
h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None)

info( '*** Add links\n')
net.addLink(h1, s1)
net.addLink(s1, s2)
net.addLink(s2, s3)
net.addLink(s7, s3)
net.addLink(h2, s7)
net.addLink(s3, s5)
net.addLink(s4, s5)
net.addLink(s4, s6)
net.addLink(s6, h4)
net.addLink(s5, h3)
net.addLink(s2, s4)

info( '*** Starting network\n')
net.build()
info( '*** Starting controllers\n')
for controller in net.controllers:
    controller.start()

info( '*** Starting switches\n')
net.get('s3').start([c0])
net.get('s5').start([])
net.get('s7').start([])
net.get('s2').start([])
net.get('s4').start([c0])
net.get('s1').start([])
net.get('s6').start([])

info( '*** Post configure switches and hosts\n')

CLI(net)
net.stop()

if __name__ == '__main__':
    setLogLevel( 'info' )
    myNetwork()

0 ответов

У меня тоже была эта пробема! Решение заключается в использовании модуля связующего дерева в контроллере. Если вы используете контроллер Ryu, этот модуль находится по пути:ryu/ryu/app/simple_switch_stp_13.py.

Но обратите внимание! Этот модуль реализован с 3 переключателями, но у вас есть 6 переключателей. Поэтому вам следует добавить в этот модуль 3 переключателя и поменять конфиги!

Другие вопросы по тегам