Ryu学习总结(持续更新) Ryu学习总结 该篇学习笔记,与其他分析Ryu控制器代码的笔记不同,主要按照程序的构成来进行分块总结,由于本人为新手入门,不能保证没有错误,如果发现错误,欢迎指教。 以下的内容主要来源: 源码 官方文档 OpenFlow1.3.3 手册 处理一个事件的标准模板 首先,我们来看一个标准的控制器处理事件的模板 简单说,的含义就是,当接收到DISPATCHER(s)情况的事件进行your_function处理。 DISPATCHER(s)可以为单独一个,也可以为由多个DISPATCHER组成的列表,DISPATCHER描述的情况包括: Defination Explanation HANDSHAKE_DISPATCHER 交换HELLO消息 CONFIG_DISPATCHER 等待接收SwitchFeatures消息 MAIN_DISPATCHER 正常状态 DEAD_DISPATCHER 连接断开 其中是由你自己定义的函数处理过程,命名可以任意指定;是由ofp_event.py提供的一系列事件,在学习了几个Ryu的程序之后,深感,其核心就在于对这些事件的理解。所以,接下来,在分析学习官方案例的同时,也会整合Ryu源码与OpenFlow1.3.3协议的内容,对这些事件进行深入的理解与分析。 ofp_event ofp_event类位于,主要定义了OpenFlow中的各种事件,配合可以对指定事件进行处理。 ofp_event.EventOFPSwitchFeatures ofp_event.EventOFPPacketIn ofp_event.EventOFPStateChange 在源码中,对EventOFPStateChange这样进行介绍: 意思说,该class是处理协商阶段变更通知的事件,在协商更改后发生此消息给观察者。 当我们使用一下的命令,我们就成为了观察者,发生此类消息时,便可以进行接收和处理 详细案例见Traffic Monitor 在协商阶段,MAIN_DISPATCHER意味着有新的交换机接入,DEAD_DISPATCHER意味着有交换机脱离连接。 总结: 发起事件 处理事件 交换机状态变化 EventOFPStateChange ofp_event.EventOFPFlowStatsReply 在源码中,对EventOFPFlowStatsReply这样介绍: 意思说,该事件用于处理个体流量统计sigusoft消息,即统计某一交换机上的流量信息。而流量统计信息存储在()结构体中。具体包括: table_id duration_sec duration_nsec priority idle_timeout hard_timeout flags cookie packet_count byte_count match instructions 使用范例: 来源:源码 与上一个事件的产生来源不同,该事件并不是由交换机状态改变而产生,而是由控制器主动发出,触发该事件并接收处理的。控制器主动发出的命令为函数。 同样,查看源码中该函数的文档 看见,该函数作用就是发出流量统计请求的。文档同样给出范例程序: 查看构造函数: 实际使用过程中,如果没有特定需要,这里我们可以只指定一个datapath参数,其他为缺省的默认值。 小结: 发起事件 处理事件 OFPFlowStatsRequest EventOFPFlowStatsReply ofp_event.EventOFPPortStatsReply 在源码中对该函数的说明如下: 该函数为端口统计应答消息,文档中给的范例程序如下: 通过案例程序,我们可以看到,从该消息中,我们可以到: rx_packets tx_packets rx_bytes tx_bytes rx_dropped tx_dropped rx_errors tx_errors rx_frame_err tx_overerr rx_crc_err collisions duration_sec duration_nsec 同样该事件同样对应存在一个端口统计请求事件,源码中对该函数的说明如下: 使用范例如下: 小结: 发起事件 处理事件 OFPPortStatsRequest EventOFPPortStatsReply
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/55969.html