《虚拟化和云计算》实验报告——MININET实践SDN

MiniNet

由一些虚拟的终端节点(end-hosts)、交换机、路由器连接而成的一个网络仿真器,支持0penflow协议,可以用它来实践SDN。

MiniNet安装

源码安装

git clone git://github.com/mininet/mininet

在这里插入图片描述

cd mininet/util
./install.sh -a

在这里插入图片描述

直接安装

apt install mininet

安装测试

sudo mn # 会显示mn的默认网络拓扑
pingall # 使用pingall测试,会显示主机h1和h2可以ping通
nodes #其他命令测试
net

在这里插入图片描述
在这里插入图片描述

singe,3

sudo mn --topo singe,3
pingall 
nodes
net

在这里插入图片描述
在这里插入图片描述

linear,3

sudo mn --topo linear,3
pingall 
nodes
net

在这里插入图片描述
在这里插入图片描述

tree,2

sudo mn --topo tree,2
pingall 
nodes
net

在这里插入图片描述
在这里插入图片描述

cutsom

cd mininet/custom
ll
mn --custom topo-2sw-2host.py --topo mytopo
pingall 
nodes
net

在这里插入图片描述
在这里插入图片描述

custom修改

vim topo-2sw-2host.py
mn --custom topo-2sw-2host.py --topo mytopo
pingall 
nodes
net
from mininet.topo import Topo

class MyTopo( Topo ):
    "Simple topology example."

    def build( self ):
        "Create custom topo."

        # Add hosts and switches
        leftHost = self.addHost( 'h1' )
        midHost = self.addHost( 'h3' )
        rightHost = self.addHost( 'h2' )
        leftSwitch = self.addSwitch( 's1' )
        midSwitch = self.addSwitch( 's3' )
        rightSwitch = self.addSwitch( 's2' )

        # Add links
        self.addLink( leftHost, leftSwitch )
        self.addLink( leftSwitch, midSwitch)
        self.addLink( midHost, midSwitch )
        self.addLink( midSwitch, rightSwitch )
        self.addLink( rightSwitch, rightHost )


topos = { 'mytopo': ( lambda: MyTopo() ) }

在这里插入图片描述
在这里插入图片描述

Ryu

RYU是一款基于python的控制器,你可用Ryu实现各种想要实现的网络功能,它可以下发或接收流表进行各种路由运算。

Ryu 安装

apt-get update
apt install python3-pip
pip3 install ryu

Ryu 测试

ryu-manager

在这里插入图片描述

Ryu 简单使用

Test 1

Terminal 1

ryu-manager

在这里插入图片描述
Terminal 2

mn --controller=remote,ip=127.0.0.1,port=6653
pingall
h1 ping h2

在这里插入图片描述
无法ping通

Test2

Terminal 1

ryu-manager ryu.app.simple_switch

在这里插入图片描述

Terminal 2

mn --controller=remote,ip=127.0.0.1,port=6653
pingall
h1 ping h2

在这里插入图片描述

Ryu Restful 控制

官方文档:https://ryu.readthedocs.io/en/latest/app/ofctl_rest.html

构建

ryu-manager ryu.app.ofctl_rest

在这里插入图片描述
Terminal 2

mn --controller=remote,ip=127.0.0.1,port=6653
pingall
h1 ping h2

在这里插入图片描述
无法ping通

获取信息

GET 192.168.30.134:8080/stats/desc/1

在这里插入图片描述

获取交换机流表

获取dpid为1的交换机流表

GET 192.168.30.134:8080/stats/flow/1

在这里插入图片描述

增加流表表项

POST 192.168.30.134:8080/stats/flowentry/add

{
    "dpid": 1,
    "match": {
        "in_port": 1
    },
    "actions": [
        {
            "type": "OUTPUT",
            "port": 2
        }
    ]
}
{
    "dpid": 1,
    "match": {
        "in_port": 2
    },
    "actions": [
        {
            "type": "OUTPUT",
            "port": 1
        }
    ]
}

ping通

删除流表表项

POST 192.168.30.134:8080/stats/flowentry/clear/1

无法ping通

参考文章

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Starzkg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值