实验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平台 ...
随机推荐
- 构建api gateway之 健康检查
Healthcheck 由于服务无法保证永远不会下线,而且下线时不一定能有人员能及时发现, 所以api gateway 一般会引入一个监工 Healthcheck, 像大家每年体检一样定时确认服务是否 ...
- drf-jwt源码分析以及自定义token签发认证、alc和rbac
1.drf-jwt源码执行流程 1.1 签发(登录) 1.代码: urls.py: from rest_framework_jwt.views import obtain_jwt_token urlp ...
- 基于Apache Hudi 构建Serverless实时分析平台
NerdWallet 的使命是为生活中的所有财务决策提供清晰的信息. 这涵盖了一系列不同的主题:从选择合适的信用卡到管理您的支出,到找到最好的个人贷款,再到为您的抵押贷款再融资. 因此,NerdWal ...
- Redis02 在linux安装部署(单机版)
1 安装gcc编译器 进入linux,执行命令 sudo apt-get install -y gcc Centos使用yum命令替代apt-get sudo yum install -y gcc 2 ...
- 【Oculus Interaction SDK】(九)使用控制器时显示手的模型
前言 这篇文章是[Oculus Interaction SDK]系列的一部分,如果发现有对不上的对方,可以回去翻看我之前发布的文章,或在评论区留言.如果文章的内容已经不适用于新版本了,也可以直接联系我 ...
- SpringMVC返回值类型及响应数据类型
1.SpringMVC 和 Struts2 的优略分析 共同点: 它们都是表现层框架,都是基于 MVC 模型编写的. 它们的底层都离不开原始 ServletAPI. 它们处理请求的机制都是一个核心控制 ...
- P12_小程序API的3大分类
小程序 API 概述 小程序中的 API 是由宿主环境提供的,通过这些丰富的小程序 API,开发者可以方便的调用微信提供的能力,例如:获取用户信息.本地存储.支付功能等. 小程序 API 的 3 大分 ...
- ASP.NET Core开发者指南(2022版路线图)
ASP.NET Core开发者指南 2022年 ASP.NET Core 开发者指南: 在下面,您可以看到一个图,说明可以采用的路径以及要成为ASP.NET Core开发人员所想要学习的库.我将此图作 ...
- JZOJ 5354. 【NOIP2017提高A组模拟9.9】导弹拦截
题目 如题 分析 第一问很简单, \(dp\) 即可(得先排序) 第二问很经典,最小路径覆盖问题,最大流解决 \(n-Maxflow\) \(Code\) #include<cstdio> ...
- CF1367E Necklace Assembly
题目传送门 思路 提供一种比现有的两篇题解都简单的方法. 我们枚举答案,发现最终的答案数组一定是由多个完全相同的块组成的,并且块长必定是 \(k\) 的因数. 然后我们考虑枚举答案 \(i\),那么此 ...