mininet

时间:2018-05-27 11:04:13

标签: python mininet pox

我使用Mininet创建了一个简单的自定义拓扑。它正常工作当我第一次运行它时,但之后我收到以下错误消息:

异常:创建接口对时出错(s1-eth1,h1-eth0):RTNETLINK答案:文件存在

它是什么,我该如何解决?

这是我的拓扑结构:

from mininet.topo import Topo
from mininet.net import Mininet


class CustomTopo (Topo):

    def build(self):

        S1 = self.addSwitch('s1')

        H1 = self.addHost('h1')
        H2 = self.addHost('h2')

        self.addLink(S1, H1)
        self.addLink(S1, H2)


topo = CustomTopo()
net = Mininet(topo)
net.start()

topos = {'mytopo': CustomTopo}

有关更多信息,请使用Mininet 2.3.0d1

我在没有遥控器的情况下通过以下命令运行它并收到另一个错误: sudo mn --custom /home/bob/Desktop/Mtopo.py --topo = mytopo --mac

错误是: 例外:请关闭在端口6653上运行的控制器

我检查了 netstat -nl | grep 6653 但是端口6653上没有活动会话,并且没有其他控制器可以关闭。

2 个答案:

答案 0 :(得分:0)

使用此库:

from mininet.link import TCLink, Intf

并在添加链接时执行此操作:

self.addLink(s1, h1, cls=TCLink)

答案 1 :(得分:0)

你实际上两次启动Mininet。一旦进入您的脚本,另一个使用命令行。 将脚本更改为:

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

class CustomTopo (Topo):

    def build(self):

        S1 = self.addSwitch('s1')

        H1 = self.addHost('h1')
        H2 = self.addHost('h2')

        self.addLink(S1, H1)
        self.addLink(S1, H2)


topo = CustomTopo()
net = Mininet(topo, controller=lambda name: RemoteController(name, ip='127.0.0.1', protocol='tcp', port = 6633), autoSetMacs=True)
net.start()
CLI(net)
net.stop()

保存到start_topology.py并以

运行
sudo python start_topology.run

或将您的脚本更改为

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


class CustomTopo (Topo):

    def build(self):

        S1 = self.addSwitch('s1')

        H1 = self.addHost('h1')
        H2 = self.addHost('h2')

        self.addLink(S1, H1)
        self.addLink(S1, H2)


topo = CustomTopo()
topos = {'mytopo': CustomTopo}

保存到mytopo.py并以

运行
sudo mn --custom mytopo.py --topo=mytopo --mac --controller=remote,ip=127.0.0.1,port=6633

(相应地更改控制器的IP和PORT)