搭建一个简单的SDN网络环境
第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)中的要求。
说明:以上列举的为硬性要求,在报告书中必须给出。但报告书内容的组织可以灵活处理,自由发挥,不限于上述要求的内容。
实验报告如下:
一、搭建网络环境需求:
- ubuntu12.04版本;
- 默认安装所有 Mininet相关的相关套件,如:OpenFlow、POX 等工具会默认保存在当前用户的家目录,即利用mininet仿真软件进行处理;
- 在mininet软件下进行相关命令的配置来完成实验的目的。
二、实验操作:
- 在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>
- 由于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>
正好可以满足本实验的要求,因此我们就可以借助于这个拓扑图而无需进行修改,当然我们可以通过其他命令来自定义拓扑结构,在以后的文章种再进行讲解。
- 通过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>
- 接下来就是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>
- 在抓包软件中要首先进行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="" />
- 为了修改流表,因此我们将用到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>
- 以上实验已经完成!
- 附:由于刚刚学习SDN的相关知识,有些配置还不是很了解,希望大家给予指正,相互学习,谢谢~~
搭建一个简单的SDN网络环境相关推荐
- 用 cooking 搭建一个简单又优雅的 Vue 项目开发环境 (入门篇)
本文适合 Vue 的初学者,以及对 webpack 不熟悉的同学阅读.前提是你要会用基本的命令行. Node 和 NPM,以及掌握 ES2015 的基础知识.本文都是在 macOS 环境下运行,要求使 ...
- 使用eNSP搭建一个简单的网络
使用eNSP搭建一个简单的网络 第一次使用eNSP搭建一个简单的网络,在师傅的耐心讲解及自己的慢慢摸索下最终使得3台PC之间通过静态路由实现了互通. 一.前言 华为现在不知道是在eNSP进行优化还是咋 ...
- 用思科网络模拟器搭建一个简单的局域网
目录 前言 搭建 配置 前言 在搭建一个简单的局域网前,你必须知道一些常识. 网线(双绞)线的标准 T568A标准:白绿.绿.白橙.蓝.白蓝.橙.白棕.棕 T568B标准:白橙.橙.白绿.蓝.白蓝.绿 ...
- 前端自动化构建工具:用Gulp4.0搭建一个基本的前端开发环境
一个项目的完成一般需要经过三个步骤:初始化.开发和部署.在前端开发过程中,我们经常需要依靠一些自动化构建工具来优化前端工作流程,来帮助我们完成一系列繁琐的工作,例如浏览器热更新.ES6编译.代码压缩. ...
- 我的Serverless实战—基于Serverless搭建一个简单的WordPress个人博客图文详解-JJZ
文正在参与 "100%有奖 | 我的Serverless 实战"征稿活动 活动链接:https://marketing.csdn.net/p/15940c87f66c68188cf ...
- Python后端---使用Django+Mysql搭建一个简单的网站
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.项目搭建 前期准备 命令行创建项目和app Django项目配置文件说明 使用数据库 编写业务逻辑 配置url主路 ...
- 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 ...
- 使用SpringBoot搭建一个简单的webSocket服务
前言 个人地址:使用SpringBoot搭建一个简单的webSocket服务 什么是WebSocket? WebSocket是一个HTML5新增的协议,它的目的在浏览器和服务器之间建立一个不受限的双向 ...
- 测试开发——搭建一个简单 web服务(flask框架基础)项目实战
搭建一个简单 web服务-flask框架 一.什么是wsgi? 二.搭建一个简单 web服务 三.扩展 四.请求加参数的情况 五.安装flask 一.什么是wsgi? wsgi是webserver和a ...
最新文章
- php mysql 星级评分_jQuery+PHP实现星级评分
- 2016年软考网络工程师考试命题范围变化之网络设备配置与复习技巧
- 函 float *search(float(*pointer)[4],int n)
- 三星:Android之外,技术为王
- php怎样查看视频播放的进度条,H5中视频与音频标签和进度条如何使用
- linux gpio按键驱动程序,Linux GPIO Key 驱动的加载
- android adb apk包名,ADB命令简单使用--查看包名、activity等
- natepad怎么连linux看日志,linux添加用户操作日志
- c++ char*初始化_[零食时间]C/C++ 字符串全家桶(字符串表示/定义、字符串输入输出、易错点等)上半桶...
- 吴恩达神经网络和深度学习-学习笔记-9-mini-batch梯度下降法
- 解决Tuxera NTFS for Mac软件安装问题
- echarts词云图实现_系统讲解如何用Python制作自己专属的词云图(示例)
- GRE(Generic Routing Encapsulation,通用路由封装)tunnel技术
- 转两好文防丢:Debian 版本升级/降级 Linux 应用程序失去输入焦点问题的解决...
- 手机APP游戏/软件/资源下载站/软件盒子源码
- el-select和el-tree结合的下拉树
- yyds,Python爬虫从小白到Bigboss全套学习路线+视频+资料
- 如何使用MScomm控件
- Django框架初体验(一)
- LaTex第一篇:军事理论论文