实验5:开源控制器实践POX
一、基础实验
建立拓扑:
sudo mn --topo=single,3 --mac --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow10
运行Hub模板:
./pox.py log.level --DEBUG forwarding.hub
开启主机终端:
mininet> xterm h2 h3
在h2 /h3 主机终端输入:
tcpdump -nn -i h2/h3-eth0
1、h1 ping h2,h2和h3的tcpdump抓包结果截图:


2、h1 ping h3,h2和h3的tcpdump抓包结果截图:


3、L2_learning模块代码流程图:

4、使用 tcpdump 验证Switch模块
运行L2_learning模块:./pox.py log.level --DEBUG forwarding.l2_learning
h1 ping h2(h3没有收到数据包):


h1 ping h3(h2没有收到数据包):


二、进阶要求
重新建立拓扑,用dpctl del-flows命令删除流表,如下图。

将拓扑连接至SendFlowInSingle3(默认端口6633),实现向s1发送流表规则使得所有主机两两互通。 ( ./pox.py log.level --DEBUG SendFlowInSingle3)
代码:
点击查看代码
from pox.core import core
import pox.openflow.libopenflow_01 as of
class SendFlowInSingle3(object):
def __init__(self):
core.openflow.addListeners(self)
def _handle_ConnectionUp(self, event):
msg = of.ofp_flow_mod() # 使用ofp_flow_mod()方法向交换机下发流表
msg.priority = 1
msg.match.in_port = 1 # 使数据包进入端口1
msg.actions.append(of.ofp_action_output(port=2)) # 从端口2转发出去
msg.actions.append(of.ofp_action_output(port=3)) # 从端口3转发出去
event.connection.send(msg)
msg = of.ofp_flow_mod() # 使用ofp_flow_mod()方法向交换机下发流表
msg.priority = 1
msg.match.in_port = 2 # 使数据包进入端口2
msg.actions.append(of.ofp_action_output(port=1)) # 从端口1转发出去
msg.actions.append(of.ofp_action_output(port=3)) # 从端口3转发出去
event.connection.send(msg)
msg = of.ofp_flow_mod() # 使用ofp_flow_mod()方法向交换机下发流表
msg.priority = 1
msg.match.in_port = 3 # 使数据包进入端口3
msg.actions.append(of.ofp_action_output(port=1)) # 从端口1转发出去
msg.actions.append(of.ofp_action_output(port=2)) # 从端口2转发出去
event.connection.send(msg)
def launch():
core.registerNew(SendFlowInSingle3)


三、心得体会
本次实验难度挺大的
一开始我不清楚怎么打开POX,在询问了同学之后才逐渐明白操作的过程。而后也和室友一样遇到了删除流表不起作用的问题,重启之后也能顺利的解决。
在进阶部分,没注意老师的文档在./pox.py log.level --DEBUG调用文件的时候加上了.py,自己摸索了挺久的,后面还是问了问同学才解决问题。
最后的时候,我的进阶1的代码一直出现问题,问了老师,老师看了很久,才发现我的这台虚拟机和别人有些不同,POX的6633端口在关闭后仍然会继续运行,要kill进程才能有效进行下去。
总而言之,这次试验我基本是边问边做的,还是有很多的不足之处,有待进步。
实验5:开源控制器实践POX的更多相关文章
- 实验5:开源控制器实践——POX
一.实验目的 1.能够理解 POX 控制器的工作原理: 2.通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法: 3.能够运 ...
- 实验4:开源控制器实践——OpenDaylight
实验4:开源控制器实践--OpenDaylight 一.实验目的 能够独立完成OpenDaylight控制器的安装配置: 能够使用Postman工具调用OpenDaylight API接口下发流表. ...
- 实验6:开源控制器实践——RYU
实验目的 能够独立部署RYU控制器 能够理解RYU控制器实现软件定义的集线器原理 能够理解RYU控制器实现软件定义的交换机原理 二.实验环境 下载虚拟机软件Oracle VisualBox或VMwar ...
- 【DevOps敏捷开发动手实验】开源文档 v2015.2 stable 版发布
Team Foundation Server 2015 Update 2版本终于在2周前的//Build 2016大会上正式发布了,借这个东风,小编也完成了[DevOps敏捷开发动手实验]开源文档的第 ...
- 20155317王新玮《网络对抗技术》实验8 WEB基础实践
20155317王新玮<网络对抗技术>实验8 WEB基础实践 一.实验准备 1.0 实验目标和内容 Web前端HTML.能正常安装.启停Apache.理解HTML,理解表单,理解GET与P ...
- 20145314郑凯杰《网络对抗技术》实验8 WEB基础实践
20145314郑凯杰<网络对抗技术>实验8 WEB基础实践 一.实验准备 1.0 实验目标和内容 Web前端HTML.能正常安装.启停Apache.理解HTML,理解表单,理解GET与P ...
- 8月自动化测试课程 - Selenium开源自动化测试实践
8月自动化测试课程 - Selenium开源自动化测试实践 http://gdtesting.cn/news.php?id=35
- 从 Spark 到 Kubernetes — MaxCompute 的云原生开源生态实践之路
2019年5月14日,喜提浙江省科学技术进步一等奖的 MaxCompute 是阿里巴巴自研的 EB 级大数据计算平台.该平台依托阿里云飞天基础架构,是阿里巴巴在10年前做飞天系统的三大件之分布式计算部 ...
- 实验6:开源控制器实———RYU
一.实验目的 1.能够独立部署RYU控制器: 2.能够理解RYU控制器实现软件定义的集线器原理: 3.能够理解RYU控制器实现软件定义的交换机原理. 二.实验环境 Ubuntu 20.04 Deskt ...
- vivo霍金实验平台设计与实践-平台产品系列02
vivo 互联网平台产品研发团队 - Bao Dawei 本篇介绍了vivo霍金实验平台的系统架构以及业务发展过程中遇到的问题以及对应的解决方案. <平台产品>系列文章: 1.vivo平台 ...
随机推荐
- 最长上升子序列 II 时间复杂度(nlogn)
题目:最长上升子序列 II 给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少. 输入格式 第一行包含整数 N. 第二行包含 N个整数,表示完整序列. 输出格式 输出一个整数,表示 ...
- rust 网上资料记录(自用)
最近要学嵌入式的rust,记录一些资料的url,方便自己查阅 书籍 常用的: rust圣经(不是权威指南那本)https://course.rs/ 中文 rust 参考手册 https://rustw ...
- win10使用python自动化安装mysql8.0.11
流程概要 下载mysql-8.0.11-winx64压缩包 解压 编辑配置文件my.ini 管理员权限cmd安装(注意初始化时设置默认密码为空) pymysql连接,执行sql操作. 代码实现 依赖: ...
- 复制内容到剪切板通用的js方法
复制内容到剪切板通用的js方法 /** * 复制内容到剪切板 * @param text 要复制的内容 */ function Clipboard(text) { if (navigator.clip ...
- Vue前后端交互、生命周期、组件化开发
目录 Vue前后端交互.生命周期.组件化开发 一.Vue用axios与后端交互 二.Vue的生命周期 三.组件化开发 Vue前后端交互.生命周期.组件化开发 一.Vue用axios与后端交互 如果 ...
- JZOJ 2483. 【GDKOI 2021提高组DAY1】回文(palindrome)
题目 求区间最长回文串长度 \(1 \le n\le 5 \times 10^5\) 题解 比较妙的做法,主要是在询问部分 预处理出以某位为中心回文半径长 \(p_i\),马拉车和二分+哈希均可 然后 ...
- JZOJ 3570. 【GDKOI2014】壕壕的寒假作业
解析 这道题比较水. 求最快什么时候做完作业? 如果要最快完成第i份作业,那么是i的前继那些作业都要完成之后才能够完成i,所以,为了尽快完成i,我们要把i的前继的作业全部先做完. 最慢什么时候做完作业 ...
- VSCode 国内镜像下载地址
https://vscode.cdn.azure.cn/stable/,比如: https://vscode.cdn.azure.cn/stable/e4503b30fc78200f846c62cf8 ...
- 04#Web 实战:Gitee 贡献图
前言 这次要做的 Web 前端实战是一个 Gitee 个人主页下的贡献图(在线 Demo),偶尔做一两个,熟悉熟悉 JS 以及 jQ.整体来说这个案例并不难,主要是控制第一个节点以及最后一个节点处于星 ...
- Java语言输出菱形图型
package fuxi;public class Diamond { public static void main(String[] args) { printHollowRh ...