Python 将mininet连接到外部主机

Python 将mininet连接到外部主机,python,controller,mininet,Python,Controller,Mininet,我刚刚设置了一个mininet拓扑。 现在我想通过Ubuntu的接口将Mininet交换机上的一个端口连接到一个外部端口。 Ubuntu服务器有两个端口: ens33连接到真实网络 ens38连接到VMnet2 我的Python脚本: 从mininet.net导入mininet 从mininet.node导入控制器 从mininet.cli导入cli 从mininet.link导入Intf 从mininet.log导入setLogLevel,信息 从mininet.topo导入topo 类别

我刚刚设置了一个mininet拓扑。 现在我想通过Ubuntu的接口将Mininet交换机上的一个端口连接到一个外部端口。 Ubuntu服务器有两个端口:

  • ens33
    连接到真实网络
  • ens38
    连接到VMnet2
我的Python脚本:

从mininet.net导入mininet
从mininet.node导入控制器
从mininet.cli导入cli
从mininet.link导入Intf
从mininet.log导入setLogLevel,信息
从mininet.topo导入topo
类别MyTopo(Topo):
“简单拓扑示例。”
定义初始化(自):
“创建自定义地形。”
#初始化拓扑
拓扑初始化(自)
#添加主机和交换机
“***添加开关\n”
s1=self.addSwitch('s1'))
Intf('ens38',节点=s1)
s2=self.addSwitch('s2'))
“***添加主机\n”
h2=self.addHost('h2')
#添加链接
“***添加链接\n”
self.addLink(h2,s2)
拓扑={'mytopo':(lambda:mytopo())}
但当我使用以下命令行运行它时:

mn--自定义qtho-topo.py--topo-mytopo\
--控制器=远程,ip=192.168.1.128,端口=6633\
--交换机ovsk,协议=OpenFlow13
有错误:

Caught exception. Cleaning up...

AttributeError: 'str' object has no attribute 'addIntf'

有人对此有经验吗?

这个问题是不久前提出的,但我希望我的建议能有所帮助。
self.addSwitch()
函数返回一个字符串,因此
s1
是一个字符串,而
Intf
函数需要一个
节点
类型

如果要使用命令行运行,一个简单的解决方案是创建网络,然后使用添加接口的测试函数,如下例所示:

从mininet.net导入mininet
从mininet.node导入控制器
从mininet.cli导入cli
从mininet.link导入Intf
从mininet.log导入setLogLevel,信息
从mininet.topo导入topo
类别MyTopo(Topo):
“简单拓扑示例。”
def生成(自):
“创建自定义地形。”
#添加主机和交换机
“***添加开关\n”
s1=self.addSwitch('s1'))
信息(“**类型s1-->”,类型(s1),“\n”)
s2=self.addSwitch('s2'))
“***添加主机\n”
h2=self.addHost('h2')
#添加链接
“***添加链接\n”
self.addLink(h2,s2)
def附加面(mn):
s1_node=mn.getNodeByName(“s1”)
Intf(“ens38”,节点=s1_节点)
CLI(mn)
测试={'addIf':addIface}
拓扑={'mytopo':(lambda:mytopo())}
要在命令行中运行它,假设您已将文件命名为test.py:

mn--custom=test.py--topo=mytopo--test=addIf

除了朱塞佩的回答之外,这段代码对我很有用:

def addIface(mn):
s1_node=mn.getNodeByName(“s1”)
s1_节点连接(“ens38”)
CLI(mn)

您是否解决了此问题?我现在也处在同一点上……一年半之后也是一样。。。