【问题标题】:How to properly connect remote controller POX to mininet如何正确连接遥控器 POX 到 mininet
【发布时间】:2016-05-23 11:49:06
【问题描述】:

我构建了一个简单的 mininet 拓扑,其中两个主机连接到由远程控制器 pox 控制的交换机,该远程控制器 pox 运行 forwarding.L2_learning 组件。这工作正常 ping 都很好。

现在我用两个主机和两个交换机更改拓扑,每个主机连接到一个交换机,两个交换机都连接到运行相同组件的远程 pox 控制器(forwarding.L2_learning)。

但是这次 pingall 不工作了!!我是 mininet 和 pox 的新手。

用于创建mininet拓扑的python脚本如下

#!/usr/bin/python

from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSController
from mininet.node import CPULimitedHost, Host, Node
from mininet.node import OVSKernelSwitch, UserSwitch
from mininet.node import IVSSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import TCLink, Intf
from subprocess import call
from time import sleep


def myNetwork():
    net = Mininet(topo=None,
                  build=False,
                  ipBase='10.0.0.0/8')

    info('*** Adding controller\n')
    c0 = net.addController(name='c0',
                           controller=RemoteController,
                           ip='0.0.0.0',
                           protocol='tcp',
                           port=6633)

    info('*** Add switches\n')
    s1 = net.addSwitch('s1', cls=OVSKernelSwitch)
    s2 = net.addSwitch('s2', cls=OVSKernelSwitch)

    info('*** Add hosts\n')
    h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None)
    h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)

    info('*** Add links\n')
    net.addLink(h1, s1)
    net.addLink(h2, s2)
    net.addLink(h1, s2)

    info('*** Starting network\n')
    net.build()

    info('*** Starting controllers\n')
    for controller in net.controllers:
        controller.start()

    info('*** Starting switches\n')
    net.get('s1').start([c0])
    net.get('s2').start([c0])

    info('*** Post configure switches and hosts\n')
    net.pingAll()
    net.stop()


if __name__ == '__main__':
    setLogLevel('info')
    myNetwork()

【问题讨论】:

  • 您是如何创建新拓扑的?
  • @SotirisTsartsaris 我使用了 mininet python API。

标签: python mininet sdn openflow pox


【解决方案1】:

我假设的控制器在 localhost 上运行,但您应该替换

ip='0.0.0.0'

c0=net.addController(name='c0',
                      controller=RemoteController,
                      ip='127.0.0.1',
                      protocol='tcp',
                      port=6633)

替换

net.addLink(h1, s2)

net.addLink(s1, s2)

连接两个开关

【讨论】:

  • 刚刚发现我添加链接的错误: net.addLink(h1, s1) net.addLink(h2, s2) , net.addLink(h1, s2) ;解决此问题的愚蠢错误我将 net.addLink(h1, s2) 替换为 net.addLink(s1, s2)
  • 你在我添加这个的时候得到了我。你现在应该没事了。
  • 请再问一个问题,我应该使用 h1.cmd() 在主机(例如 h1)上运行命令的最佳方式是什么??
  • 当第一次从终端 shh 到 mininet 虚拟框时,通过 -X 选项显示,然后 xterm h1 o mininet cli 为 h1 打开终端
  • 感谢 xterm 解决方案,我在 API 中使用 h1.cmd("commands...") 找到了我想要的东西,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-29
  • 2014-07-03
  • 2022-11-12
  • 2023-02-15
  • 1970-01-01
  • 2018-01-17
  • 2014-11-21
相关资源
最近更新 更多