Контроллер Ryu не пересылает пакеты после изменений в топологии минисетиPython

Программы на Python
Ответить
Anonymous
 Контроллер Ryu не пересылает пакеты после изменений в топологии минисети

Сообщение Anonymous »

Я написал простой код минисети, чтобы создать топологию, которая хорошо работала бы с логикой моего контроллера. У меня была топология:
h относится к хосту, of относится к коммутатору открытого потока

Код: Выделить всё

h1  of1
h2  of2
h3  of2
h4  of3
of1  of2
of2  of3
После этого я внес следующие изменения в топологию. Ниже приведено изображение и код для сети Mininet, которая сейчас не работает с тем же контроллером.
Изображение

Код: Выделить всё

import os
from mininet.log import info
from mininet.cli import CLI
from mininet.link import TCLink
from mininet.net import Mininet
from mininet.node import RemoteController, OVSSwitch

def setup_network():
net = Mininet(controller=RemoteController, switch=OVSSwitch, link=TCLink)

# Add Ryu controller
info('[+] Adding Ryu controller\n')
c0 = net.addController('c0', controller=RemoteController)

# Add switches, hosts, and links as before
info('[+] Adding OpenFlow switches\n')
of1 = net.addSwitch('of1')
of2 = net.addSwitch('of2')
of3 = net.addSwitch('of3')
of4 = net.addSwitch('of4')
of5 = net.addSwitch('of5')

# Adding hosts
info('[+] Adding hosts\n')
h1 = net.addHost('h1', ip='10.0.0.1')
h2 = net.addHost('h2', ip='10.0.0.2')
h3 = net.addHost('h3', ip='10.0.0.3')
h4 = net.addHost('h4', ip='10.0.0.4')
h5 = net.addHost('h5')
h6 = net.addHost('h6')

# Adding links based on the diagram (switches connected to each other and hosts)
info('[+] Adding links between switches, hosts, and edge servers\n')
# Links between Switches
net.addLink(of1, of2) # horizontal connection
net.addLink(of2, of3)
net.addLink(of4, of5)
net.addLink(of1, of4) # Vertical connection
net.addLink(of2, of4)
net.addLink(of3, of5)
# Link between Host & Switched
net.addLink(of1, h1)
net.addLink(of1, h2)
net.addLink(of2, h3)
net.addLink(of2, h4)
net.addLink(of3, h5)
net.addLink(of3, h6)
# Start the network
net.build()
c0.start()  # Start the controller
net.start()

# Discover the topology
topology = topology_discovery(net)
CLI(net)
net.stop()
return net, topology

# --------------------------------------- TOPOLOGY DISCOVERY ------------------------------------------
def topology_discovery(net):
info('[*] Discovering topology\n')

topology = {
'switches': {},
'hosts': {},
'links': []
}

for switch in net.switches:
topology['switches'][switch.name] = switch

for host in net.hosts:
topology['hosts'][host.name] = host

for link in net.links:
topology['links'].append((link.intf1.node.name, link.intf2.node.name))

print("\n===================================================================================================")
print("[!] Discovered Topology:")
print("Switches:", topology['switches'].keys())
print("Hosts:", topology['hosts'].keys())
print("Links:", topology['links'])
print("===================================================================================================")

return topology

if __name__ == '__main__':
# os.system("mn -c")
setup_network()
Может ли кто-нибудь сказать, почему контроллер не отправляет пакеты, что не так с моей мини-сетью
РЕДАКТИРОВАТЬ:
В ходе исследования я обнаружил, что мне нужно использовать STP, также есть STPlib, но я не знаю, поможет ли это, но это будет очень полезно>

Подробнее здесь: https://stackoverflow.com/questions/791 ... t-topology
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»