openVswitch(OVS)源代码分析之工作流程(flow流表查询)

         作者:庾志辉     完成时间:2014-9-25 00:43   原文地址:http://blog.csdn.net/yuzhihui_no1/article/details/39504139

         前面分析了openVswitch几部分源代码,对于openVswitch也有了个大概的理解,今天要分析得代码将是整个openVswitch的重中之重。整个openVswitch的核心代码在datapath文件中;而datapath文件中的核心代码又在ovs_dp_process_received_packet(struct vport *p, struct sk_buff *skb);函数中;而在ovs_dp_process_received_packet(struct vport *p, struct sk_buff *skb);函数中的核心代码又是流表查询(流表匹配的);有关于ovs_dp_process_received_packet(struct vport *p, struct sk_buff *skb);核心代码的分析在前面的openVswitch(OVS)源代码分析之工作流程(数据包处理)中。今天要分析得就是其核心中的核心:流表的查询(匹配流表项)源代码。我分析源代码一般是采用跟踪的方法,一步步的往下面去分析,只会跟着主线走(主要函数调用),对其他的分支函数调用只作大概的说明,不会进入其实现函数去分析。由于流表的查询设计到比较多的数据结构,所以建议对照着openVswitch(OVS)源代码分析之数据结构去分析,我自己对数据结构已经大概的分析了遍,可是分析流表查询代码时还是要时不时的倒回去看看以前的数据结构分析笔记。

       注:这是我写完全篇后补充的,我写完后自己阅读了下,发现如果就单纯的看源代码心里没有个大概的轮廓,不是很好理解,再个最后面的那个图,画的不是很好(我也不知道怎么画才能更好的表达整个意思,抱歉),所以觉得还是在这个位置(源代码分析前)先来捋下框架(也可以先看完源码分析再来看着框架总结,根据自己情况去学习吧)。上面已经说过了openVswitch(OVS)源代码分析之数据结构的重要性,现在把里面最后那幅图拿来顺着图示来分析,会更好理解。(最后再来说下那幅图是真的非常有用,那相当于openVswitch的整个框架图了,如果你要分析源代码,有了那图绝对是事半功倍,希望阅读源代码的朋友重视起来,哈哈,绝不是黄婆卖瓜)


        流表查询框架(或者说理论):从ovs_dp_process_received_packet(struct vport *p, struct sk_buff *skb)函数中开始调用函数查流表,怎么查呢?

        第一步、它会根据网桥上的流表结构体(table)中的mask_list成员来遍历,这个mask_list成员是一条链表的头结点,这条链表是由mask元素链接组成(里面的list是没有数据的链

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
openvswitch是一种用于虚拟交换的开源软件。而ovs-dpdk是openvswitch的一种插件,它提供了使用Data Plane Development Kit(DPDK)的功能来加速虚拟交换。 硬件offload是指将一些计算任务交给硬件来执行,以提高性能和效率。在ovs-dpdk中,硬件offload用于加速虚拟交换功能,提供更高的吞吐量和更低的延迟。 通过使用DPDK,ovs-dpdk可以直接与网络接口卡(NIC)进行交互,绕过操作系统内核,减少了数据包在主机上的处理和拷贝操作,提高了数据包的处理速度。 ovs-dpdk的硬件offload功能主要包括以下几个方面: 1. 网络虚拟化加速:ovs-dpdk可以将网络虚拟化的一些关键任务,如虚拟交换机的转发、过滤、隧道封装等,通过硬件加速实现,提高虚拟机之间的通信性能。 2. 动态流表:通过与DPDK和硬件交互,ovs-dpdk可以动态地配置硬件流表,对数据包进行分类和处理,从而减少了软件处理所需的时间和资源。 3. 超大流量处理:ovs-dpdk支持高达数百万个数据包每秒(Mpps)的数据包处理能力,适用于高密度数据中心或网络交换机等场景,能够应对大规模流量需求。 总结起来,ovs-dpdk的硬件offload功能能够加速虚拟交换功能,提供更高的性能和效率。通过与DPDK和硬件配合,ovs-dpdk可以实现网络虚拟化加速、动态流表和超大流量处理等功能,满足高性能虚拟交换的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值