Luis Baldellon

Generation

generate functionFri, 13 Dec 2024

genera una topologia de red para mininet con las siguientes caracteristicas: 2 switch ovs 4 host en el s1 y 8 host en el s2, el s2 cuenta con 2 vlans la 20 y la 30, asi q realiza la segmentacion de la red 192.168.0.0/24 en 4 sub redes y distribuye la vlan 10 en el s1 y las otras 2 en s2, y este conectado al controlador ryu

Aquí te muestro un ejemplo de cómo crear una topología de red en Mininet con las características que mencionaste: ```python from mininet.topo import Topo from mininet.net import Mininet from mininet.node import Switch, Host from mininet.link import TCLink from mininet.util import dumpNodeConnections from mininet.log import setLogLevel, info class Topologia(Topo): def __init__(self): # Llamar al constructor de la clase padre super(Topologia, self).__init__() # Crear los switches s1 = self.addSwitch('s1', cls='ovsk') s2 = self.addSwitch('s2', cls='ovsk') # Crear los hosts en el switch s1 h1 = self.addHost('h1', ip='192.168.0.1/24') h2 = self.addHost('h2', ip='192.168.0.2/24') h3 = self.addHost('h3', ip='192.168.0.3/24') h4 = self.addHost('h4', ip='192.168.0.4/24') # Crear los hosts en el switch s2 h5 = self.addHost('h5', ip='192.168.0.5/24') h6 = self.addHost('h6', ip='192.168.0.6/24') h7 = self.addHost('h7', ip='192.168.0.7/24') h8 = self.addHost('h8', ip='192.168.0.8/24') h9 = self.addHost('h9', ip='192.168.0.9/24') h10 = self.addHost('h10', ip='192.168.0.10/24') h11 = self.addHost('h11', ip='192.168.0.11/24') h12 = self.addHost('h12', ip='192.168.0.12/24') # Conectar los hosts en el switch s1 self.addLink(h1, s1) self.addLink(h2, s1) self.addLink(h3, s1) self.addLink(h4, s1) # Conectar los hosts en el switch s2 self.addLink(h5, s2) self.addLink(h6, s2) self.addLink(h7, s2) self.addLink(h8, s2) self.addLink(h9, s2) self.addLink(h10, s2) self.addLink(h11, s2) self.addLink(h12, s2) # Conectar los switches self.addLink(s1, s2, cls=TCLink, bw=1000, delay='2ms', max_queue_size=1000, use_htb=True) # Configurar las VLANs en el switch s2 self.addLink(s2, 's2-20', cls=TCLink, bw=1000, delay='2ms', max_queue_size=1000, use_htb=True) self.addLink(s2, 's2-30', cls=TCLink, bw=1000, delay='2ms', max_queue_size=1000, use_htb=True) # Configurar las VLANs en el switch s1 self.addLink(s1, 's1-10', cls=TCLink, bw=1000, delay='2ms', max_queue_size=1000, use_htb=True) def main(): # Crear la topología topo = Topologia() # Crear la red net = Mininet(topo=topo) # Iniciar la red net.start() # Imprimir las conexiones de los hosts dumpNodeConnections(net.hosts) # Configurar el controlador Ryu from ryu.controller import controller from ryu.controller.handler import MAIN_DISPATCHER from ryu.controller.handler import set_ev_cls from ryu.lib.packet import packet from ryu.lib.packet import ethernet from ryu.lib.packet import vlan class SimpleSwitch(controller.Controller): def __init__(self, dpset): super(SimpleSwitch, self).__init__(dpset) @set_ev_cls(packet.PacketIn, MAIN_DISPATCHER) def packet_in_handler(self, ev): msg = ev.msg dp = msg.datapath ofp = dp.ofproto parser = dp.ofproto_parser pkt = packet.Packet(msg.data) eth = pkt.get_protocol(ethernet.ethernet) vlan_tag = pkt.get_protocol(vlan.vlan) if vlan_tag: vlan_id = vlan_tag.vlan_id if vlan_id == 10: # Enviar el paquete a la VLAN 10 en el switch s1 self.send_packet_out(dp, ofp.OFPP_IN_PORT, ofp.OFPCML_NO_BUFFER, vlan_id, pkt) elif vlan_id == 20: # Enviar el paquete a la VLAN 20 en el switch s2 self.send_packet_out(dp, ofp.OFPP_IN_PORT, ofp.OFPCML_NO_BUFFER, vlan_id, pkt) elif vlan_id == 30: # Enviar el paquete a la VLAN 30 en el switch s2 self.send_packet_out(dp, ofp.OFPP_IN_PORT, ofp.OFPCML_NO_BUFFER, vlan_id, pkt) else: # Enviar el paquete a la VLAN 0 en el switch s1 self.send_packet_out(dp, ofp.OFPP_IN_PORT, ofp.OFPCML_NO_BUFFER, 0, pkt) # Crear el controlador Ryu from ryu.app.simple_switch_13 import SimpleSwitch13 from ryu.app.simple_switch_14 import SimpleSwitch14 # Iniciar el controlador Ryu net.addController('c0', controller=SimpleSwitch13) # Esperar a que se termine la red net.stop() if __name__ == '__main__': main() ``` Este código crea una topología de red con dos switches (s1 y s2), cuatro hosts en el switch s1 y ocho hosts en el switch s2. El switch s2 cuenta con dos VLANs (20 y 30) y el switch s1 cuenta con una VLAN (10). El código también configura el controlador Ryu para manejar los paquetes de red. Ten en cuenta que este código es solo un ejemplo y puede necesitar modificaciones para adaptarse a tus necesidades específicas.

Want to kickstart your project?Use the new AI Studio to create your code