controller目录下的ofo_event.py定义了OpenFlow事件,handler.py定义了事件的处理

from ryu.baseimport app_managerfromryu.controller import ofp_eventfromryu.controller.handler import MAIN_DISPATCHERfromryu.controller.handler import set_ev_clsfromryu.ofproto import ofproto_v1_0classL2Switch(app_manager.RyuApp):

OFP_VERSIONS=[ofproto_v1_0.OFP_VERSION]

def __init__(self,*args, **kwargs):

super(L2Switch, self).__init__(*args, **kwargs)

@set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER)

def packet_in_handler(self, ev):

msg=ev.msg

dp=msg.datapath

ofp=dp.ofproto

ofp_parser=dp.ofproto_parser

actions=[ofp_parser.OFPActionOutput(ofp.OFPP_FLOOD)]out =ofp_parser.OFPPacketOut(

datapath=dp, buffer_id=msg.buffer_id, in_port=msg.in_port,

actions=actions)

dp.send_msg(out)

新增的代码中加入了新方法packet_in_handler,当Ryu收到OpenFlow交换机送来的packet_in消息时调用,set_ev_cls的第一个参数也声明了。

set_ev_cls的第二个参数MAIN_DISPATCHER意味着当Ryu和交换机握手过程(即hello, features request/reply, Set Config等)完毕,才会调用packet_in_handler。

之后定义packet_in消息数据结构,交换机datapath,OpenFlow协议和解析过程;

定义发给交换机packet_out的动作,要求交换机将数据包泛洪广播;定义Ryu向交换机发送的packet_out内容,最后发送消息。

至此,一个能够接收packet和转发packet的交换机完成了(接收packet,广播packet)。

openflow交换机 ryu_ryu(示例代码)相关推荐

  1. OpenFlow交换机【ACM SIGCOMM顶会论文笔记】

    目录 写在前面的话 OpenFlow交换机 基本思想与工作原理 专用OpenFlow交换机(Dedicated OpenFlow switches) 启用OpenFlow的交换机(OpenFlow-e ...

  2. tf.squeeze示例代码

    官网上对此方法有介绍,但缺少验证示例,而百度上搜到的都是从官网上翻译过来的,正确倒都是正确的,只是缺少验证示例,这边写一个示例代码,希望能帮助理解 import tensorflow as tfk = ...

  3. ASP.NET 2.0 读取配置文件[INI](示例代码下载)

    (一). 功能 操作配置文件[*.ini]类 (二). 代码 1. 核心类文件 INIFILE.cs 代码  1 /// <summary>  2 /// INIFILE 操作类  3 / ...

  4. ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)

    学习整理了一下 (一).功能 用HttpHandler实现图片验证码 (二).代码如下 1. 处理程序文件 ValidateImageHandler.ashx代码如下  1 <%@ WebHan ...

  5. python目标检测与识别_Python 使用Opencv实现目标检测与识别的示例代码

    在上章节讲述到图像特征检测与匹配 ,本章节是讲述目标检测与识别.后者是在前者的基础上进一步完善. 在本章中,我们使用HOG算法,HOG和SIFT.SURF同属一种类型的描述符.功能代码如下: impo ...

  6. 云开发使用 got 的 get/post 传参请求示例代码

    使用 got 进行网络请求的步骤: 1.创建云函数,并在终端执行云函数 2.执行 npm 安装 got ,命令:cnpm install --save got 3.在云函数中使用 示例代码: // 云 ...

  7. Unity 简单示例代码和向导/Unity Aplication Block

    Unity 简单示例代码和向导 关于Unity 的说明和下载地址,请访问[微软控制反转和依赖注入容器Unity 1.0发布] http://forum.entlib.com/Default.aspx? ...

  8. 装饰器的定义、语法糖用法及示例代码

    1. 装饰器的定义 就是给已有函数增加额外功能的函数,它本质上就是一个闭包函数. 装饰器的功能特点: 不修改已有函数的源代码 不修改已有函数的调用方式 给已有函数增加额外的功能 2. 装饰器的示例代码 ...

  9. 闭包的介绍、构成条件、作用及示例代码

    1. 闭包的介绍 我们学过了函数,我们知道当函数调用完,函数内定义的变量都销毁了,但是我们有时候需要保存函数内的这个变量,每次在这个变量的基础上完成一些列的操作,比如: 每次在这个变量的基础上和其它数 ...

最新文章

  1. python 2.6.6安装MySQL-python模块
  2. 【反传销】春节一个短暂误入传销和脱身的真实故事以及对技术的思考
  3. IIS 之 线程池最大线程数
  4. Java中的守护线程和非守护线程(转载)
  5. java 19 - 11 异常的注意事项
  6. 在hibernate框架中配置显示sql语句
  7. php 正则表达式 文档,php的正则表达式完全手册
  8. 百度、支付宝、今日头条先后被约谈,下一个会是谁?
  9. Codeforces Round #310 (Div. 1) B. Case of Fugitive set
  10. 用Map集合来统计一个字符串数组中每个字符串的个数
  11. 直播预告| 基于神经网络模型的开放领域对话系统研究
  12. 三极管单级放大器输入输出阻抗
  13. GlusterFS企业级功能之EC纠删码
  14. 搜狗浏览器安装插件(.crx)
  15. 微信公众号通过第三方平台完成授权
  16. 都2020了,做Web前端还这么香么
  17. apollo自动驾驶进阶学习之:如何调试减速带通行限速参数
  18. Linux局域网共享打印机(实用型文档)
  19. Linux socket网络编程实现FTP服务器
  20. ps色阶怎么用:一招搞定曝光调整 | 萧蕊冰

热门文章

  1. mysql 2038年问题_64位Ubuntu系统的时间戳,2038年问题
  2. Html中圆圈怎么画,css怎么画圆?
  3. VC++ 编写程序计算月亮方位,高度,赤经,赤纬等信息
  4. convert函数用法小结
  5. 磁共振t1t2信号记忆顺口溜_学习MRI时,老师都说 T1 看解剖,T2 看病变,T1、T2 是什么意思?大家怎样理解这句话的?...
  6. 煤炭行业管理平台解决方案,生产全过程价值管理,降本增效
  7. 超过一半美国车主下一辆仍想买燃油车,中国新能源汽车市场接受度明显高,续航里程均是首要关注 | 美通社头条...
  8. android保存网站在桌面,如何将网站保存到手机桌面(Android)?
  9. Git基本操作,入门级别
  10. 程序员如何积累编程技术或编程经验?