POX学习笔记:POX接收OpenFlow消息的处理流程分析
2014-10-29 11:22
375 查看
首先boot()调用of_01.launch()向core中注册了一个OpenFlow_01_Task的类的组件,并且把这个组件明明为"of_01"。
在这个类中有一个run方法会轮询所有socket,包括用来监听连接请求的listener和维持与OVS连接的socket,每一个和OpenFlow交换机的连接都会生成一个Connection类的实例,当收到OpenFlow消息之后,会调用Connection类中定义的read()方法来检查这个OpenFlow消息的头部是不是符合规范,包头部中的length是不是和包本身的长度相符,是何种类型的OpenFlow消息等,最终交给相应的handle函数来进行处理。
在read()方法中,会根据解析出的OpenFlow类型调用unpackers函数,实际上是调用了libopenflow_01.py中定义的每种OpenFlow消息的类中的unpack方法,生成一个赋过值的该类的实例。
值得注意的是可能会出现几个OpenFlow消息在一个TCP包中的情况,这里采用顺序解析的方式,每解析完一个OpenFlow消息,就会得到一个新的offset,从而解析下一个OpenFlow消息。
(原创博文,转载请声明出处)
在这个类中有一个run方法会轮询所有socket,包括用来监听连接请求的listener和维持与OVS连接的socket,每一个和OpenFlow交换机的连接都会生成一个Connection类的实例,当收到OpenFlow消息之后,会调用Connection类中定义的read()方法来检查这个OpenFlow消息的头部是不是符合规范,包头部中的length是不是和包本身的长度相符,是何种类型的OpenFlow消息等,最终交给相应的handle函数来进行处理。
在read()方法中,会根据解析出的OpenFlow类型调用unpackers函数,实际上是调用了libopenflow_01.py中定义的每种OpenFlow消息的类中的unpack方法,生成一个赋过值的该类的实例。
值得注意的是可能会出现几个OpenFlow消息在一个TCP包中的情况,这里采用顺序解析的方式,每解析完一个OpenFlow消息,就会得到一个新的offset,从而解析下一个OpenFlow消息。
(原创博文,转载请声明出处)
相关文章推荐
- Linux IGMP PROXY 学习笔记 之二 igmp proxy的处理流程分析
- STM32学习笔记之USB数据接收和发送流程分析
- MonoRail学习笔记四:MonoRail基本流程分析
- Socket网络编程学习笔记(4):TCP消息边界处理
- C/C++学习笔记3 - cin深入分析(下) - cin的错误处理(原创)
- Android2.2 Vold 分析-(四)---Vold 消息接收及挂载/卸载处理部分分析
- 汇编语言学习笔记-接收键盘消息
- vlc学习计划(5)--网络数据流接收处理过程分析
- Android2.2 Vold 消息接收及挂载/卸载处理部分分析
- Android消息处理学习笔记
- vlc学习计划(5)--网络数据流接收处理过程分析
- 蔡军生先生第二人生的源码分析(三十七)消息处理的完整流程
- ASP.NET 3.5核心编程学习笔记(1):ASP.Net页面请求处理流程
- vlc学习计划(6)--网络数据流接收处理过程分析
- C/C++学习笔记2 - cin深入分析(上) - cin输入操作处理(原创)
- Windows Mobile学习笔记_关于csliderbar和wm_hscroll消息处理
- wse2.0学习笔记--消息的接收
- 天嵌科技TQ2440的uboot启动流程分析学习笔记
- Android2.2 Vold 分析-(四)---Vold 消息接收及挂载/卸载处理部分分析
- vc图像处理学习笔记1-图像格式分析及显示