zoukankan      html  css  js  c++  java
  • 2019 SDN上机第6次作业

    1.实验拓扑


    2019 SDN上机第2次作业
    要求
    使用Python脚本完成拓扑搭建,并连接ryu控制器。

    from mininet.topo import Topo
     
    class MyTopo( Topo ):
        "Simple topology example."
     
        def __init__( self ):
     
            # Initialize topology
            Topo.__init__( self )
            
            sw1 = self.addSwitch('s1')
            sw2 = self.addSwitch('s2')
    
            h1 = self.addHost('h1')
            h2 = self.addHost('h2')
            h3 = self.addHost('h3')
            h4 = self.addHost('h4')
            h5 = self.addHost('h5')
            h6 = self.addHost('h6')
    
            self.addLink(h1,sw1,1,1)
            self.addLink(h2,sw1,1,2)
            self.addLink(h3,sw1,1,3)
            self.addLink(sw1,sw2,4,4)
            self.addLink(h4,sw2,1,1)
            self.addLink(h5,sw2,1,2)
            self.addLink(h6,sw2,1,3)
    
    topos = { 'mytopo': ( lambda: MyTopo() ) }
    

    sudo mn --custom ./sdn2.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13

    输入以下命令连接ryu控制器

    ryu-manager ofctl_rest.py
    

    2.使用Ryu的REST API下发流表实现和第2次实验同样的VLAN

    curl -X POST -d '{
        "dpid": 1,
        "priority":1,
        "match":{
            "in_port":1                  #端口1
        },
        "actions":[
            {
                "type": "PUSH_VLAN",     # 给进入交换机的包打上vlan_tag
                "ethertype": 33024       # 帧类型0x8100(=33024): 表示IEEE 802.1Q的VLAN数据帧
            },
            {
                "type": "SET_FIELD",
                "field": "vlan_vid",     # 设置VLAN ID
                "value": 4096            # 设置vlan_id的值
            },
            {
                "type": "OUTPUT",
                "port": 4
            }
        ]
     }' http://127.0.0.1:8080/stats/flowentry/add
    
    curl -X POST -d '{
        "dpid": 1,
        "priority":1,
        "match":{
            "dl_vlan": "0"
        },
        "actions":[
            {
                "type": "POP_VLAN",     # 给进入交换机的包去除 vlan_tag
            },
            {
                "type": "OUTPUT",
                "port": 1
            }
        ]
     }' http://localhost:8080/stats/flowentry/add
    

    逐个执行

    也可以合并在一起执行

    查看流表

    可以看到控制器端显示下发的流表已被接收

    可以ping通相同VLAN的,如实验2

    3.对比两种方法,写出你的实验体会

    curl相比于之前的方法实际上是用远程管理的方法来下发流表,相比ovs-ofctl 这种方法,通用性更高。
    全部sh命令见链接

  • 相关阅读:
    13-计算属性和侦听器
    12-指令系统介绍
    11-vue的使用
    10-vue的介绍
    09-babel
    08-webpack的介绍
    07-nodejs中npm的使用
    06-Nodejs介绍
    05-面向对象
    Docker结合Jenkins构建持续集成环境
  • 原文地址:https://www.cnblogs.com/passguan/p/11984979.html
Copyright © 2011-2022 走看看