Openflow-消息处理流程笔记.docx

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Openflow-消息处理流程笔记

何腾飞2017.04.25更新Openflow 消息处理源码:sptn_code中ofp/dpa/tne模块。简介: ofp模块接收sck的flow_mod消息,处理后发送给DPA, DPA处理后在发送给TNE。以下消息处理过程均以flow_mod消息为例,*部分为group_mod消息的处理。*、Sck处理流程sck_create_proc()sck_receive_proc()一、Ofp处理流程简介:接收SCK消息,发送给DPA。File:ofpmain.cofp_create_proc()File:ofprecv.c一系列初始化操作;设置接收函数ofp_receive_proc() ;...ofp_receive_proc()in: ips消息,queue_id队列id判断queue_id:Sck : 调用ofp_rcv_sck_ips();...ofp_rcv_sck_ips()In: ips消息判断ips_type消息类型:Sck_register;Sck_unregister;Sck_rsp;Sck_error;Sck_data;Openflow协议数据:ofp_message_reassemble() ;ofp_check_of_msg_list();Netconf协议数据:...Sck_close;ofp_message_reassemble()收到ofp消息后,首先需要存入ofp消息队列,此时先要判断是否需要新建一个ofp消息块节点or使用现有的LQE队列对应的ofp消息块节点,Ofp消息队列如下:1---2---3---4---5---...---N该消息队列为一个双向循环链表;N为全局变量v_ofp_shared-ofp_msgs始终不变;初始化时N.next和N.prev均指向N自身,N自身是没有数据域的(N.self==null);有数据节点时,N.next始终指向第1个结点,N.prev始终指向最后1个结点;故只有满足以下条件才不需要新建LQE节点:队列为空(N.next == N时);队列不为空但尾结点为NULL代码实现如下,解释: A --- B---N(N为当前的全局ofp消息的LQE )ofp_alloc_sck_mssage_cb()申请分配并初始化一个OFP_SCK_MSG_CB结构类型的ofp_message,然后插入ofp消息队列(LQE类型的ofp_msgs)的前面;NBB_INSERT_BEFORE()说明:N为目前的全局ofp消息 LQE;E为新分配的ofp消息的LQE;ASSERT宏只有DEBUG模式下有效,用于验证入参E的指针为null,N的指针不为null;ofp_check_of_msg_list()File:ofpsck2.c依次处理ofp_msg,对符合条件的msg执行以下处理:ofp_save_of_data();ofp_rcv_of_data(ofp_message);ofp_free_ofp_message(ofp_message);ofp_rcv_of_data()File:ofpdpa1.c提取ofp_header(openflow头);关闭Timer()定时器,其他一些处理;判断header_type类型:Hello;Echo_request;...Flow_mod:Ofp_rcv_flow_mod();Group_mod:ofp_rcv_group_mod();...Mulyipart_request;...其他自定义类型;5.1 ofp_rcv_flow_mod()赋值flow_mod header;赋值flow_mod body(行动);赋值match ,判断处理;(只有type,length ?)判断指令类型:Goto_table;...Write_actions;Ofp_fill_action_list();...构造ips;将flow_mod ,match拷贝到ips;判断各类偏移:...ofp_snd_dpa_ips(); //发送ips消息给dpa5.2 ofp_fill_action_list()一系列初始化;判断action_type(组帧action_array):Output;TTL_out;...PUSH_VLAN;...sptn_exp_action_type;...用action_array 组帧instruction_entry;*. ofp_rcv_group_mod()赋值group_mod header;赋值group_mod body(行动);ofp_fill_bucket_action();构造ips;将group_mod 拷贝到ips;ofp_snd_dpa_ips();*. ofp_fill_bucket_a

文档评论(0)

138****7331 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档