2019 SDN上机第6次作业

蹲街弑〆低调 提交于 2019-12-06 23:07:28

1.实验拓扑

实验拓扑


要求
使用Python脚本完成拓扑搭建,并连接ryu控制器。
答:
  • 搭建拓扑:

  • 连接控制器
    命令:


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

参考资料
REST API:可以在线学习中国大学MOOC 《软件定义网络》第六讲 北向接口
ryu控制器的api文档
ryu的拓扑展示
要求
编写脚本,一键执行下发流表。
答:

  • 安装curl
    命令:sudo apt-get install curl

  • 编写脚本如下

    curl -X POST -d '{
    "dpid": 1,
    "priority":1,
    "match":{
    "in_port":1
    },
    "actions":[
    {
    "type": "PUSH_VLAN",
    "ethertype": 33024
    },
    {
    "type": "SET_FIELD",
    "field": "vlan_vid",
    "value": 4096
    },
    {
    "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",
    "ethertype": 33024
    },
    {
    "type": "SET_FIELD",
    "field": "vlan_vid",
    "value": 4097
    },
    {
    "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",
    "ethertype": 33024
    },
    {
    "type": "SET_FIELD",
    "field": "vlan_vid",
    "value": 4098
    },
    {
    "type": "OUTPUT",
    "port": 4
    }
    ]
    }' http://127.0.0.1:8080/stats/flowentry/add

    向端口1转发
    curl -X POST -d '{
    "dpid": 1,
    "priority":1,
    "match":{
    "dl_vlan": "0"
    },
    "actions":[
    {
    "type": "POP_VLAN",
    },
    {
    "type": "OUTPUT",
    "port": 1
    }
    ]
    }' http://localhost:8080/stats/flowentry/add

    向端口2转发
    curl -X POST -d '{
    "dpid": 1,
    "priority":1,
    "match":{
    "dl_vlan": "1"
    },
    "actions":[
    {
    "type": "POP_VLAN",
    },
    {
    "type": "OUTPUT",
    "port": 2
    }
    ]
    }' http://localhost:8080/stats/flowentry/add

    向端口3转发
    curl -X POST -d '{
    "dpid": 1,
    "priority":1,
    "match":{
    "dl_vlan": "2"
    },
    "actions":[
    {
    "type": "POP_VLAN",
    },
    {
    "type": "OUTPUT",
    "port": 3
    }
    ]
    }' http://localhost:8080/stats/flowentry/add
    s2
    curl -X POST -d '{
    "dpid": 2,
    "priority":1,
    "match":{
    "in_port":1
    },
    "actions":[
    {
    "type": "PUSH_VLAN",
    "ethertype": 33024
    },
    {
    "type": "SET_FIELD",
    "field": "vlan_vid",
    "value": 4096
    },
    {
    "type": "OUTPUT",
    "port": 4
    }
    ]
    }' http://127.0.0.1:8080/stats/flowentry/add

    端口号2发来数据
    curl -X POST -d '{
    "dpid":2,
    "priority":1,
    "match":{
    "in_port":2
    },
    "actions":[
    {
    "type": "PUSH_VLAN",
    "ethertype": 33024
    },
    {
    "type": "SET_FIELD",
    "field": "vlan_vid",
    "value": 4097
    },
    {
    "type": "OUTPUT",
    "port": 4
    }
    ]
    }' http://127.0.0.1:8080/stats/flowentry/add

    端口号3发来数据
    curl -X POST -d '{
    "dpid": 2,
    "priority":1,
    "match":{
    "in_port":3
    },
    "actions":[
    {
    "type": "PUSH_VLAN",
    "ethertype": 33024
    },
    {
    "type": "SET_FIELD",
    "field": "vlan_vid",
    "value": 4098
    },
    {
    "type": "OUTPUT",
    "port": 4
    }
    ]
    }' http://127.0.0.1:8080/stats/flowentry/add

    向端口1转发
    curl -X POST -d '{
    "dpid": 2,
    "priority":1,
    "match":{
    "dl_vlan": "0"
    },
    "actions":[
    {
    "type": "POP_VLAN",
    },
    {
    "type": "OUTPUT",
    "port": 1
    }
    ]
    }' http://localhost:8080/stats/flowentry/add

    向端口2转发
    curl -X POST -d '{
    "dpid": 2,
    "priority":1,
    "match":{
    "dl_vlan": "1"
    },
    "actions":[
    {
    "type": "POP_VLAN",
    },
    {
    "type": "OUTPUT",
    "port": 2
    }
    ]
    }' http://localhost:8080/stats/flowentry/add

    向端口3转发
    curl -X POST -d '{
    "dpid": 2,
    "priority":1,
    "match":{
    "dl_vlan": "2"
    },
    "actions":[
    {
    "type": "POP_VLAN",
    },
    {
    "type": "OUTPUT",
    "port": 3
    }
    ]
    }' http://localhost:8080/stats/flowentry/add

  • 执行脚本
  • pinall 检查连通性


#3.对比两种方法,写出你的实验体会
相比实验二中在终端手动下发流表,本实验中,使用Ryu的REST API的下发方式下发流表实现VLAN,更加直观,且易于理解,更具有灵活性,可读性极佳。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!