SDN实验(一)——Mininet简单路由实验

使用Mininet搭建简单的拓扑实验,其中有几个小细节需要注意的,先贴代码。

#!/usr/bin/python

from mininet.net import Mininet
from mininet.log import info,setLogLevel
from mininet.node import Controller
from mininet.node import RemoteController
from mininet.node import OVSKernelSwitch
from mininet.node import Host
from mininet.cli import CLI

# 使用python代码创建简单拓扑
def myNetwork():

    #  拓扑整体配置
    net = Mininet(
        topo = None,
        build = False,
        ipBase = '10.0.0.0/8'
    )
    
    # 添加控制器
    """
    如果选择Remoteontroller,则表示使用的是外置的控制器,比如Ryu控制器,
    则需要启动外置控制器才能ping通(cd ryu/ryu/app-->ryu-manager ./simple_switch.py)
    如果是Controller,则表明使用的是Mininet自带的控制器
    """
    info("----------Adding controller----------\n")
    c0 = net.addController(
        name='c0',
        controller = RemoteController,
        ip = '127.0.0.1',
        protocol = 'tcp',
        port = 6633
    )
    
    # 添加交换机
    info("----------Adding Switches----------\n")
    s1 = net.addSwitch('s1', cls=OVSKernelSwitch, dpid='0000000000000001')
    s2 = net.addSwitch('s2', cls=OVSKernelSwitch, dpid='0000000000000002')

    # 添加主机
    info("----------Adding 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)
    h3 = net.addHost('h3',cls=Host,ip='10.0.0.3',defaultRoute=None)
    h4 = net.addHost('h4',cls=Host,ip='10.0.0.4',defaultRoute=None)
    h5 = net.addHost('h5',cls=Host,ip='10.0.0.5',defaultRoute=None)
    h6 = net.addHost('h6',cls=Host,ip='10.0.0.6',defaultRoute=None)

    # 添加连接
    info("----------Adding Links----------\n")
    # net.addLink(c0,s1)
    # net.addLink(c0,s2)
    net.addLink(s1,s2)
    net.addLink(s1,h1)
    net.addLink(s1,h2)
    net.addLink(s2,h3)
    net.addLink(s2,h4)
    net.addLink(s2,h5)
    net.addLink(s2,h6)

    # 启动拓扑
    info( '----------Starting network----------\n')
    net.build()
    # 启动控制器
    info( '----------tarting 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')

    CLI(net)
    net.stop()

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

1. 为什么使用Ryu控制器无法ping通?
如果选择Remoteontroller,则表示使用的是外置的控制器,比如Ryu控制器, 则需要启动外置控制器才能ping通(cd ryu/ryu/app–>ryu-manager ./simple_switch.py)。如果是Controller,则表明使用的是Mininet自带的控制器。
2. 简单拓扑能否直接用可视化界面实现?
肯定是可以的。
首先进入到example目录下

cd mininet/example

然后打开可视化界面(注意是python3不是python了)

sudo python3 ./miniedit.py

然后就能进入可视化界面了:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值