zoukankan      html  css  js  c++  java
  • sdn第六次作业

    1.实验拓扑

    • 实验拓扑
    • 要求
      使用Python脚本完成拓扑搭建,并连接ryu控制器。
    class MyTopo(Topo):
    
        def __init__(self):
    
            # initilaize topology
            Topo.__init__(self)
    
            # add hosts and switches
            h1 = self.addHost('h1')
            h2 = self.addHost('h2')
            h3 = self.addHost('h3')
            h4 = self.addHost('h4')
            h5 = self.addHost('h5')
            h6 = self.addHost('h6')
            s1 = self.addSwitch('s1')
            s2 = self.addSwitch('s2')
    
            # add links
            self.addLink(h1, s1, 1, 1)
            self.addLink(h2, s1, 1, 2)
            self.addLink(h3, s1, 1, 3)
            self.addLink(s1, s2, 4, 4)
            self.addLink(h4, s2, 1, 1)
            self.addLink(h5, s2, 1, 2)
            self.addLink(h6, s2, 1, 3)
            
    topos = {'mytopo': (lambda: MyTopo())}
    
    • 创建拓扑
    • 测试连通性
    • 运行文件下的gui_topology

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

    要求:编写脚本,一键执行下发流表。

    • 下发流表(以s1为例)
    配置交换机s1-----------------------------------------------
    
    #端口1发来的数据
    curl -X POST -d '{
        "dpid": 1,
        "priority":1,
        "match":{
            "in_port":1
        },
        "actions":[
            {
                "type": "PUSH_VLAN",    # s1将从端口1发来的数据包打上vlan_tag
                "ethertype": 33024      # 帧类型0x8100(=33024): 表示IEEE 802.1Q的VLAN数据帧
            },
            {
                "type": "SET_FIELD",
                "field": "vlan_vid",    # 设置VLAN ID
                "value": 4096       # 设置vlan_id的值,VLAN_ID = 0 (0x1000)
            },
            {
                "type": "OUTPUT",
                "port": 4
            }
        ]
    }' http://127.0.0.1:8080/stats/flowentry/add
    
    #端口号2发来数据
    curl -X POST -d '{
        "dpid": 1,
        "priority":1,
        "match":{
            "in_port":2
        },
        "actions":[
            {
                "type": "PUSH_VLAN",    # s1将从端口2发来的数据包打上vlan_tag
                "ethertype": 33024
            },
            {
                "type": "SET_FIELD",
                "field": "vlan_vid",
                "value": 4097       # 设置vlan_id的值,VLAN_ID = 1 (0x1001)
            },
            {
                "type": "OUTPUT",
                "port": 4
            }
        ]
    }' http://127.0.0.1:8080/stats/flowentry/add
    #端口号3发来数据
    curl -X POST -d '{
        "dpid": 1,
        "priority":1,
        "match":{
            "in_port":3
        },
        "actions":[
            {
                "type": "PUSH_VLAN",    # s1将从端口3发来的数据包打上vlan_tag
                "ethertype": 33024
            },
            {
                "type": "SET_FIELD",
                "field": "vlan_vid",
                "value": 4098       # 设置vlan_id的值,VLAN_ID = 2 (0x1002)
            },
            {
                "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",     # 将 dl_vlan=0 的包出去 vlan_tag
            },
            {
                "type": "OUTPUT",
                "port": 1           # 向端口1转发
            }
        ]
    }' http://localhost:8080/stats/flowentry/add
    curl -X POST -d '{
        "dpid": 1,
        "priority":1,
        "match":{
            "dl_vlan": "1"
        },
        "actions":[
            {
                "type": "POP_VLAN",     # 将 dl_vlan=1 的包出去 vlan_tag
            },
            {
                "type": "OUTPUT",
                "port": 2           # 向端口2转发
            }
        ]
    }' http://localhost:8080/stats/flowentry/add
    curl -X POST -d '{
        "dpid": 1,
        "priority":1,
        "match":{
            "dl_vlan": "2"
        },
        "actions":[
            {
                "type": "POP_VLAN",     # 将 dl_vlan=2 的包出去 vlan_tag
            },
            {
                "type": "OUTPUT",
                "port": 3           # 向端口3转发
            }
        ]
    }' http://localhost:8080/stats/flowentry/add
    
    • 流表已被接受
    • 验证连通性

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

    ryu的方法更加直观,便于理解。

  • 相关阅读:
    快学Java NIO
    GoldenGate 12.3 MA架构介绍系列(4)–Restful API介绍
    GoldenGate 12.3 MA架构介绍系列(3)
    GoldenGate实时投递数据到大数据平台(1)-MongoDB
    GoldenGate 12.3 MA架构介绍系列(2)
    GoldenGate 12.3 MA架构介绍系列(1)
    关于集成抽取进程重启后的现象分析
    GoldenGate Logdump基本使用
    76 道 Oracle Goldengate 面试问题
    ogg 12.3 中 format release的变化
  • 原文地址:https://www.cnblogs.com/lhwblogs/p/11984755.html
Copyright © 2011-2022 走看看