lxy123go 2015-04-20 04:52 采纳率: 0%
浏览 2914

用python在mininet自定义了一个topo但得不到想要的结果

这是代码.做的是一个胖树结构,
我运行之后没有报错但是得不到任何的结果,就像什么都没建立起

from mininet.topo import Topo

class FatTreeTopo( Topo ):

  CoreSwitchList = []
  AggSwitchList = []
  EdgeSwitchList = []
  HostList = []

  def __init__(self, k):
      "Create fat-tree topo"
      self.pod = k
      self.iCoreLayerSwitch = (k/2)**2
      self.iAggLayerSwitch = k*k/2
      self.iEdgeLayerSwitch = k*k/2
      self.iHost = k*k*k/4

      Topo.__init__(self)

  def createTopo(self):
      self.createCoreLayerSwitch(self.iCoreLayerSwitch)
      self.createAggLayerSwitch(self.iAggLayerSwitch)
      self.createEdgeLayerSwitch(self.iEdgeLayerSwitch)
      self.createHost(self.iHost)

  def addSwitch(self, counter, level, switch_list):
      for x in xrange(1, counter+1):
          PREFIX = str(level) + "00"
          if x >= int(10):
             PREFIX = str(level) + "0"
             switch_list.append(self.addSwitch('s' + PREFIX + str(x)))

  def createCoreLayerSwitch(self, Counter):
      self.addSwitch(Counter, 1, self.CoreSwitchList)

  def createAggLayerSwitch(self, Counter):
      self.addSwitch(Counter, 2, self.AggSwitchList)

  def createEdgeLayerSwitch(self,Counter):
      self.addSwitch(Counter, 3, self.EdgeSwitchList)

  def createHost(self, Counter):
      for x in xrange(1, Counter+1):
          PREFIX = "h00"
          if x >= int(10):
             PREFIX = "h0"
          elif x >= int(100):
             PREFIX = "h"
          self.HostList.append(self.addHost(PREFIX + str(x)))

  def createLink(self):
      end = self.pod/2
      for x in xrange(0, self.iAggLayerSwitch, end):
          for i in xrange(0, end):
              for j in xrange(0, end):
                  self.addLink(
                     self.CoreSwitchList[i*end+j],
                     self.AggSwitchList[x+i])

      for x in xrange(0, self.iAggLayerSwutch, end):
          for i in xrange(0, end):
              for j in xrange(0, end):
                  self.addLink(
                  self.AggSwitchList[x+i], self.EdgeSwitchList[x+j])

      for x in xrange(0, self.iEdgeLayerSwitch):
          for i in xrange(0, end):
              self.addLink(
                 self.EdgeSwitchList[x], self.HostList[end * x + i]) 

topos = { 'fattree': FatTreeTopo }

  • 写回答

2条回答 默认 最新

  • del2z 2015-04-28 13:57
    关注

    我没有用过mininet包,不过看你的代码,你定义的FatTreeTopo没有实例化。
    试试
    fattree = FatTreeTopo()
    topos = {"fattree": fattree}
    查询topos["fattree"]应该会有结果可以看。

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?