前段时间了解了一下openflow的原理,刚开始看openflow的源码,对于整体的实现还欠缺了解,只是对其中几个关键的函数进行简单的解读。
OFPT_QUEUE_GET_CONFIG_REQUEST是一个Controller-to-switch消息,由控制器发给交换机,要求获取交换机队列配置的。交换机收到控制器消息后,对openflow包进行解析,通过获取header中type字段,然后进行相应的响应。如type字段为OFPT_QUEUE_GET_CONFIG_REQUEST,则调用recv_queue_get_config_request函数进行处理,并最终返回 OFPT_QUEUE_GET_CONFIG_REPLY消息,其中包含了所请求端口上已配置队列信息的列表。
recv_queue_get_config_request函数所完成的功能就是构造 OFPT_QUEUE_GET_CONFIG_REPLY消息并返回给控制器。
1、首先是根据查询消息中的端口号port_no在交换机端口中进行查找(dp_lookup_port(dp,port_no)),查找成功获得端口信息,并进一步构造repley消息,返回给控制器;否则直接向控制器返回错误信息。
2、根据端口信息构造reply消息。
根据该消息的结构,