2-4软件定义网络中的控制器设置(mininet库)

文章介绍了如何在使用Mininet定义网络时,通过Python代码直接集成Ryu控制器,包括创建交换机、主机、链路,并指定控制器的IP和端口,以OpenFlow13协议启动和停止网络的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Mininet网络定义中使用各种不同的控制器。Mininet提供了对多种控制器的支持,可以根据自己的需求选择合适的控制器。
根据mininet官网的知识:https://mininet.org/api/classmininet_1_1net_1_1Mininet.html
中对于
def init (self, topo=None, switch=OVSKernelSwitch, host=Host, controller=DefaultController, link=Link, intf=Intf, build=True, xterms=False, cleanup=False, ipBase=‘10.0.0.0/8’, inNamespace=False, autoSetMacs=False, autoStaticArp=False, autoPinCpus=False, listenPort=None, waitConnected=False)
使用mininet定义网络时,其可以定义以上的参数,如没有定义,将采用默认值方式,如果将采用独立的第三方控制器(如ryu控制器),可以在启动命令的时候以携带参数的方式进行,详见:2SDN(软件定义网络)环境测试实验(ryu+mininet+wireshark)
sudo mn --controller=remote,ip=127.0.0.1,port=6633 --switch=ovs
一般来说目前ryu的现有版本中,当ryu运行后我可以通过命令查看,6653 6633两个端口都是处于监听可连接的状态
在这里插入图片描述

但我们项目如果采用mininet库进行环境定义时,如何使用python直接启用呢。那就需要把控制器写入代码中:

from mininet.topo import Topo
from mininet.net import Mininet
from mininet.cli import CLI
from mininet.node import RemoteController

class MyTopology(Topo):
    def build(self):
        # 创建交换机,同时进行交换机的协议配置,使用build()
        switch = self.addSwitch('s0', protocols='OpenFlow13')

        # 创建主机
        host1 = self.addHost('h0')
        host2 = self.addHost('h1')

        # 创建链路
        self.addLink(host1, switch)
        self.addLink(host2, switch)

topo = MyTopology()

# 指定控制器的IP地址和端口
controller_ip = '127.0.0.1'
controller_port = 6633

# 创建Mininet网络,并指定控制器和OpenFlow协议版本

net = Mininet(topo, controller=RemoteController)
net.addController('controller', controller=RemoteController, ip=controller_ip, port=controller_port,protocols='OpenFlow13')
net.start()

CLI(net)
net.stop()

把以上代码保存为topo_mininet.py
然后切换到当前路径下直接运行:root@zmq-virtual-machine:/mnt/hgfs/vmshare# python3 topo_mininet.py
效果如下图所示(注意,运行本文件之前要先把对应的RYU控制器打开)
在这里插入图片描述
扩展:在进行RYU控制器中,上文使用的打开命令是root@zmq-virtual-machine:/usr/lib/python3/dist-packages/ryu/app# ryu-manager simple_switch.py
采用的默认的端口6633或6653,但是在实际中可以手动指定ryu启动后所使用的端口,如6654,命令如下:
ryu-manager --ofp-tcp-listen-port=6654 simple_switch_13.py
在这里插入图片描述
注意的是,在mininet连接控制器时要把对应的端口参数改为6654

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值