POX学习笔记:POX接收OpenFlow消息的处理流程分析

首先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消息。

(原创博文,转载请声明出处)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值