【问题标题】:Traceback (most recent call last) error in RYU Software Defined NetworkRYU 软件定义网络中的回溯(最近一次呼叫最后一次)错误
【发布时间】:2017-05-08 19:34:43
【问题描述】:

我收到以下错误:

Traceback(最近一次调用最后一次):

文件“./ryuLinearTopo.py”,第 6 行,在

类LinearTopo(Topo):

LinearTopo 中的文件“./ryuLinearTopo.py”,第 32 行

simpleTest()

文件“./ryuLinearTopo.py”,第 21 行,在 simpleTest 中

topo = 线性拓扑(k=4)

NameError:未定义全局名称“LinearTopo”

当我运行以下代码时:

#!/usr/bin/python

from mininet.topo import Topo

from mininet.net import Mininet

from mininet.util import irange,dumpNodeConnections

from mininet.log import setLogLevel

class LinearTopo(Topo):



    def __init__(self, k=2, **opts):

        super(LinearTopo, self).__init__(**opts)

        self.k = k

        lastSwitch = None

        for i in irange(1, k):

            host = self.addHost('h%s' % i)

            switch = self.addSwitch('s%s' % i)

            self.addLink( host, switch)

            if lastSwitch:

                self.addLink( switch, lastSwitch)

            lastSwitch = switch



    def simpleTest():

        topo = LinearTopo(k=4)

        net = Mininet(topo)

        net.start()

        print "Dumping host connections"

        dumpNodeConnections(net.hosts)

        print "Testing network connectivity"

        net.pingAll()

        net.stop()

    if __name__ == '__main__':

# Tell mininet to print useful information

        setLogLevel('info')

        simpleTest()

【问题讨论】:

    标签: python traceback sdn topology ryu


    【解决方案1】:

    您的身份有问题。在您的代码中,所有方法都在您的 LinearTopo 类中定义。您想像这样在类范围之外定义它们:

    #!/usr/bin/python
    from mininet.topo import Topo
    from mininet.net import Mininet
    from mininet.util import irange,dumpNodeConnections
    from mininet.log import setLogLevel
    
    class LinearTopo(Topo):
        def __init__(self, k=2, **opts):
            super(LinearTopo, self).__init__(**opts)
            self.k = k
            lastSwitch = None
            for i in irange(1, k):
                host = self.addHost('h%s' % i)
                switch = self.addSwitch('s%s' % i)
                self.addLink( host, switch)
                if lastSwitch:
                    self.addLink( switch, lastSwitch)
                lastSwitch = switch
    
    def simpleTest():
        topo = LinearTopo(k=4)
        net = Mininet(topo)
        net.start()
    
        print "Dumping host connections"
        dumpNodeConnections(net.hosts)
    
        print "Testing network connectivity"
        net.pingAll()
    
        net.stop()
    
    if __name__ == '__main__':
        # Tell mininet to print useful information
        simpleTest()
        setLogLevel('info')
    

    这个问题应该被标记为 mininet,而不是 Ryu,因为它是一个与 mininet 相关的问题。

    【讨论】:

      猜你喜欢
      • 2022-01-10
      • 1970-01-01
      • 2013-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-27
      相关资源
      最近更新 更多