当前位置 博文首页 > 无限迭代中......:《虚拟化和云计算》实验报告——MININET实践S

    无限迭代中......:《虚拟化和云计算》实验报告——MININET实践S

    作者:[db:作者] 时间:2021-07-19 16:20

    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通

    参考文章

    cs
    下一篇:没有了