第1小题:简单网络

说明:由于对于SDN架构的理解在学界和业界并没有统一,为了方便参赛队员选择,对于初学者,大赛推荐OpenFlow作为南向接口来实现SDN环境,以下给出分别针对采用OpenFlow和采用其他接口的具体要求(分A、B两种情况)。

A. 针对采用OpenFlow作为南向接口的参赛队伍的要求:

参赛队伍首先需要搭建一个SDN架构的网络环境,初学者可以参照图1所示的一个最简单的拓扑结构,熟练的参赛队员可以自定义复杂一点的拓扑结构,两者并不影响评委评分。

B. 针对不是采用OpenFlow作为南向接口的参赛队伍的要求:

拓扑结构自定,所用设备、软件等自选,只要能够实现SDN架构的网络环境即可。

图1:简单的示例拓扑

1.      搭建环境要求:图1中控制器可以自主选择,既可选择各种开源的控制器(例如:Floodlight、Ryu、Nox、Beacon、Trema、OpenDaylight等),也可选择由本次大赛设备提供商所提供的闭源控制器。拓扑中各网络部件既可以是仿真环境实现(例如mininet,OpenvSwtich),有条件的队伍也可以通过物理设备实现,两种方案不影响必答题的评分。

2.     操作要求:对流表进行操作使得Host1和Host2能够互相ping通,然后再修改流表使得它们不能ping通。

3.     报告书要求:报告书的主要内容需要包含以下几点:

(1)  详细描述实验网络环境的搭建思路,给出搭建出来的结构拓扑图,列举选择的具体设备或者仿真软件、工具软件,并说明其在实验中的作用。

(2)  给出实现2中操作要求的具体操作步骤,以截图或者文本方式展示,要求给出初始以及前后两次对流表操作后流表内容的截图。

(3)  给出实验数据(界面截图、表格等都可)来说明实现了(2)中的要求。

说明:以上列举的为硬性要求,在报告书中必须给出。但报告书内容的组织可以灵活处理,自由发挥,不限于上述要求的内容。

实验报告如下:

一、搭建网络环境需求:

  1. ubuntu12.04版本;
  2. 默认安装所有 Mininet相关的相关套件,如:OpenFlow、POX 等工具会默认保存在当前用户的家目录,即利用mininet仿真软件进行处理;
  3. 在mininet软件下进行相关命令的配置来完成实验的目的。

二、实验操作:

  1. 在ubuntu12.04环境下安装mininet相关插件,这里我采用了默认安装所有 Mininet相关的相关套件,如:OpenFlow、POX 等工具会默认保存在当前用户的家目录。

    <span style="font-size:14px;"># git clone git://github.com/mininet/mininet
    # cd mininet/util/
    # ./install.sh -a</span>
  2. 由于mininet软件 支持自定义网络,因此我们可以命令来查看自带的拓扑结构:
    <span style="font-size:14px;">wuyouke@ubuntu:~$ sudo mn
    *** Creating network
    *** Adding controller
    *** Adding hosts:
    h1 h2
    *** Adding switches:
    s1
    *** Adding links:
    (h1, s1) (h2, s1)
    *** Configuring hosts
    h1 h2
    *** Starting controller
    *** Starting 1 switches
    s1
    *** Starting CLI:
    </span>

    也可以通过节点命令来查看节点的个数:

    <span style="font-size:14px;">mininet> nodes
    available nodes are:
    c0 h1 h2 s1
    </span>

    正好可以满足本实验的要求,因此我们就可以借助于这个拓扑图而无需进行修改,当然我们可以通过其他命令来自定义拓扑结构,在以后的文章种再进行讲解。

  3. 通过mininet中的命令来查看各个节点的IP信息,即:
    <span style="font-size:14px;">mininet> dump
    <Host h1: h1-eth0:10.0.0.1 pid=3320>
    <Host h2: h2-eth0:10.0.0.2 pid=3322>
    <OVSSwitch s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None pid=3327>
    <Controller c0: 127.0.0.1:6633 pid=3312>
    </span>
  4. 接下来就是ping两台主机,并且事先后台运行wireshark抓包软件:
    <span style="font-size:14px;">sudo wireshark &</span><pre name="code" class="plain"><span style="font-size:14px;">mininet> h1 ping -c 3 h2
    PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
    64 bytes from 10.0.0.2: icmp_req=1 ttl=64 time=1.15 ms
    64 bytes from 10.0.0.2: icmp_req=2 ttl=64 time=0.394 ms
    64 bytes from 10.0.0.2: icmp_req=3 ttl=64 time=0.058 ms</span>
  5. 在抓包软件中要首先进行filter:of。然后双击capture中选择lo端口来进行抓包饿哦,抓包图如下:
    <img src="https://img-blog.csdn.net/20141010102555984?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamsxOTkyMDUyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" height="233" width="733" alt="" />
  6. 为了修改流表,因此我们将用到ovs相关的配置命令;
    <span style="font-size:14px;">wuyouke@ubuntu:~$ sudo ovs-ofctl show s1
    OFPT_FEATURES_REPLY (xid=0x1): ver:0x1, dpid:0000000000000001
    n_tables:255, n_buffers:256
    features: capabilities:0xc7, actions:0xfff1(s1-eth1): addr:82:e0:d8:10:f6:92config:     0state:      0current:    10GB-FD COPPER2(s1-eth2): addr:6a:ef:a1:77:19:8cconfig:     0state:      0current:    10GB-FD COPPERLOCAL(s1): addr:2e:25:ee:8e:1e:45config:     PORT_DOWNstate:      LINK_DOWN
    OFPT_GET_CONFIG_REPLY (xid=0x3): frags=normal miss_send_len=0</span>
    

    以上是虚拟交换机s1的信息,获得dpid,端口openflow端口编号。

    <span style="font-size:14px;">sudo ovs-ofctl add-flow s1 idle_timeout=120,in_port=1,actions=drop
    </span>

    添加一条流规则:丢弃从1端口发来的任何数据包,此时再在sudo mn的模式下ping命令,就会发现两台主机是ping不通的。这时再次查看s1上面的流规则:

    <span style="font-size:14px;">wuyouke@ubuntu:~$ sudo ovs-ofctl dump-flows s1
    NXST_FLOW reply (xid=0x4):cookie=0x0, duration=27.463s, table=0, n_packets=0, n_bytes=0, idle_timeout=120,in_port=1 actions=drop</span>
  7. 以上实验已经完成!
  8. 附:由于刚刚学习SDN的相关知识,有些配置还不是很了解,希望大家给予指正,相互学习,谢谢~~

搭建一个简单的SDN网络环境相关推荐

  1. 用 cooking 搭建一个简单又优雅的 Vue 项目开发环境 (入门篇)

    本文适合 Vue 的初学者,以及对 webpack 不熟悉的同学阅读.前提是你要会用基本的命令行. Node 和 NPM,以及掌握 ES2015 的基础知识.本文都是在 macOS 环境下运行,要求使 ...

  2. 使用eNSP搭建一个简单的网络

    使用eNSP搭建一个简单的网络 第一次使用eNSP搭建一个简单的网络,在师傅的耐心讲解及自己的慢慢摸索下最终使得3台PC之间通过静态路由实现了互通. 一.前言 华为现在不知道是在eNSP进行优化还是咋 ...

  3. 用思科网络模拟器搭建一个简单的局域网

    目录 前言 搭建 配置 前言 在搭建一个简单的局域网前,你必须知道一些常识. 网线(双绞)线的标准 T568A标准:白绿.绿.白橙.蓝.白蓝.橙.白棕.棕 T568B标准:白橙.橙.白绿.蓝.白蓝.绿 ...

  4. 前端自动化构建工具:用Gulp4.0搭建一个基本的前端开发环境

    一个项目的完成一般需要经过三个步骤:初始化.开发和部署.在前端开发过程中,我们经常需要依靠一些自动化构建工具来优化前端工作流程,来帮助我们完成一系列繁琐的工作,例如浏览器热更新.ES6编译.代码压缩. ...

  5. 我的Serverless实战—基于Serverless搭建一个简单的WordPress个人博客图文详解-JJZ

    文正在参与 "100%有奖 | 我的Serverless 实战"征稿活动 活动链接:https://marketing.csdn.net/p/15940c87f66c68188cf ...

  6. Python后端---使用Django+Mysql搭建一个简单的网站

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.项目搭建 前期准备 命令行创建项目和app Django项目配置文件说明 使用数据库 编写业务逻辑 配置url主路 ...

  7. SpringBoot搭建一个简单的天气预报系统(一)

    章节目录 1. 前言 2. 数据来源 3. 实战 3.1 开发环境 3.2 功能需求 3.3 手动编码 3.3.1 vo层 3.3.2 service层 3.3.3 controller层 3.3.4 ...

  8. 使用SpringBoot搭建一个简单的webSocket服务

    前言 个人地址:使用SpringBoot搭建一个简单的webSocket服务 什么是WebSocket? WebSocket是一个HTML5新增的协议,它的目的在浏览器和服务器之间建立一个不受限的双向 ...

  9. 测试开发——搭建一个简单 web服务(flask框架基础)项目实战

    搭建一个简单 web服务-flask框架 一.什么是wsgi? 二.搭建一个简单 web服务 三.扩展 四.请求加参数的情况 五.安装flask 一.什么是wsgi? wsgi是webserver和a ...

最新文章

  1. php mysql 星级评分_jQuery+PHP实现星级评分
  2. 2016年软考网络工程师考试命题范围变化之网络设备配置与复习技巧
  3. 函 float *search(float(*pointer)[4],int n)
  4. 三星:Android之外,技术为王
  5. php怎样查看视频播放的进度条,H5中视频与音频标签和进度条如何使用
  6. linux gpio按键驱动程序,Linux GPIO Key 驱动的加载
  7. android adb apk包名,ADB命令简单使用--查看包名、activity等
  8. natepad怎么连linux看日志,linux添加用户操作日志
  9. c++ char*初始化_[零食时间]C/C++ 字符串全家桶(字符串表示/定义、字符串输入输出、易错点等)上半桶...
  10. 吴恩达神经网络和深度学习-学习笔记-9-mini-batch梯度下降法
  11. 解决Tuxera NTFS for Mac软件安装问题
  12. echarts词云图实现_系统讲解如何用Python制作自己专属的词云图(示例)
  13. GRE(Generic Routing Encapsulation,通用路由封装)tunnel技术
  14. 转两好文防丢:Debian 版本升级/降级 Linux 应用程序失去输入焦点问题的解决...
  15. 手机APP游戏/软件/资源下载站/软件盒子源码
  16. el-select和el-tree结合的下拉树
  17. yyds,Python爬虫从小白到Bigboss全套学习路线+视频+资料
  18. 如何使用MScomm控件
  19. Django框架初体验(一)
  20. LaTex第一篇:军事理论论文

热门文章

  1. R语言画图时常见问题
  2. 利用python下载fnl数据方法
  3. 思科网络安全 第七章测验答案
  4. 任何一个二目关系都是BCNF
  5. h5显示微信公众号文章
  6. win 10 显示未识别网络的 一种解决办法
  7. 夜神模拟器BURP抓包设置
  8. JS判断字符串是否含有某个值
  9. uploadify的简单使用
  10. android蓝牙浅析