Python 属性错误:';迷你网路由器';对象没有属性';名称';
看起来问题更多的是Python而不是Mininet 我正在尝试使用mininet构建客户网络拓扑,但仍停留在这里 当我运行下面的代码时,我得到下面的错误Python 属性错误:';迷你网路由器';对象没有属性';名称';,python,networking,mininet,Python,Networking,Mininet,看起来问题更多的是Python而不是Mininet 我正在尝试使用mininet构建客户网络拓扑,但仍停留在这里 当我运行下面的代码时,我得到下面的错误 Traceback (most recent call last): File "CustomTopo_Router2.py", line 37, in <module> customTopo = NetworkTopo() File "CustomTopo_Router2.py", line 28, in __in
Traceback (most recent call last):
File "CustomTopo_Router2.py", line 37, in <module>
customTopo = NetworkTopo()
File "CustomTopo_Router2.py", line 28, in __init__
r1_obj = MininetRouter('122.1.1.1')
File "CustomTopo_Router2.py", line 12, in __init__
self.cmd('sysctl net.ipv4.ip_forward=1')
File "build/bdist.linux-x86_64/egg/mininet/node.py", line 353, in cmd
AttributeError: 'MininetRouter' object has no attribute 'name'
我怎么会在这里?我已经把缩进画错了。
PS:几年后,我正在编写python代码。我对代码做了一些修改,以使其工作起来更符合Mininet API。这应该是有效的,因为你正在尝试去做。 请注意,我没有安装控制器,因为我没有安装它,但您可以使用Openflow控制器、RemoteController等。 我希望这对你有用
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import Node
from mininet.log import setLogLevel, info
from mininet.cli import CLI
class MininetRouterModified( Node ):
"A Node with IP forwarding enabled."
def config( self, loo_addr, **params ):
super( MininetRouterModified, self).config( **params )
# Enable forwarding on the router
# Create Loopback Interface and Assign Loopback Address to the Router
# All loopback addresses have mask 32
loo_config = 'ifconfig lo:1 ' + loo_addr + ' netmask 255.255.255.255 up'
self.cmd(loo_config)
self.cmd( 'sysctl net.ipv4.ip_forward=1' )
def terminate( self ):
self.cmd( 'sysctl net.ipv4.ip_forward=0' )
super( MininetRouterModified, self ).terminate()
class NetworkTopo( Topo ):
def build(self, **_opts):
# Create a Router Object
#r1_obj = MininetRouter('122.1.1.1', name="r1")
# Add Router object to the topology
r1 = self.addNode(name='r1',loo_addr='122.1.1.1', cls=MininetRouterModified)
if __name__ == '__main__':
customTopo = NetworkTopo()
#Get handle to net to manage your topology
net = Mininet(topo=customTopo, controller=None)
#start/deploy the Topology
net.start()
#Get Halt at Mininet CLI prompt
CLI(net)
#Destroy and stop the topology
net.stop()
我对代码做了一些修改,以使其工作起来更符合mininetapi。这应该是有效的,因为你正在尝试去做。 请注意,我没有安装控制器,因为我没有安装它,但您可以使用Openflow控制器、RemoteController等。 我希望这对你有用
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import Node
from mininet.log import setLogLevel, info
from mininet.cli import CLI
class MininetRouterModified( Node ):
"A Node with IP forwarding enabled."
def config( self, loo_addr, **params ):
super( MininetRouterModified, self).config( **params )
# Enable forwarding on the router
# Create Loopback Interface and Assign Loopback Address to the Router
# All loopback addresses have mask 32
loo_config = 'ifconfig lo:1 ' + loo_addr + ' netmask 255.255.255.255 up'
self.cmd(loo_config)
self.cmd( 'sysctl net.ipv4.ip_forward=1' )
def terminate( self ):
self.cmd( 'sysctl net.ipv4.ip_forward=0' )
super( MininetRouterModified, self ).terminate()
class NetworkTopo( Topo ):
def build(self, **_opts):
# Create a Router Object
#r1_obj = MininetRouter('122.1.1.1', name="r1")
# Add Router object to the topology
r1 = self.addNode(name='r1',loo_addr='122.1.1.1', cls=MininetRouterModified)
if __name__ == '__main__':
customTopo = NetworkTopo()
#Get handle to net to manage your topology
net = Mininet(topo=customTopo, controller=None)
#start/deploy the Topology
net.start()
#Get Halt at Mininet CLI prompt
CLI(net)
#Destroy and stop the topology
net.stop()
迷你网路由器
继承自节点
,并在初始化中调用self.cmd
。我假设该方法是从节点
继承的。问题是,您从未调用过节点的\uuuu init\uuuu
。我猜类实例没有正确设置。在调用任何继承的方法之前,应该先执行super()。\uuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
行作为两个类的构造函数中的第一行。但同样的错误。我正在运行Python2.7.6。这个线程提到了在Python2.7.xmininetwrouter
中使用super的语法,它继承自节点
,并在中调用self.cmd
。我假设该方法是从节点
继承的。问题是,您从未调用过节点的\uuuu init\uuuu
。我猜类实例没有正确设置。在调用任何继承的方法之前,应该先执行super()。\uuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
行作为两个类的构造函数中的第一行。但同样的错误。我正在运行Python2.7.6。这个线程提到了在Python2.7.x中使用super的语法