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

Posted Starzkg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《虚拟化和云计算》实验报告——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通

参考文章

以上是关于《虚拟化和云计算》实验报告——MININET实践SDN的主要内容,如果未能解决你的问题,请参考以下文章

实验1:SDN拓扑实践

实验1:SDN拓扑实践

实验1:SDN拓扑实践

实验2:Open vSwitch虚拟交换机实践

SDN第一次上机实验

实验2:Open vSwitch虚拟交换机实践