【DPDK源码阅读】Sample Application --- l3fwd之em获取5元组原理解析

本文深入分析DPDK Sample Application l3fwd中获取数据包5元组的源码逻辑,详细解释了em_get_ipv4_dst_port()函数,包括如何通过em_mask_key()函数结合mask与ipv4_hdr进行位运算来提取所需信息。涉及的知识点包括SSE、NEON、ALTIVEC等SIMD指令集,字节序以及union的使用。
摘要由CSDN通过智能技术生成

l3fwd整个程序的逻辑并不十分复杂,而且网上也有许多讲解的文章,对于大部分人来说,要看懂并不难。不过,在程序exact match部分的逻辑中,涉及到了获取数据包5元组的操作,这个操作的具体实现在源码中只有短短的几行,而且涉及到了一些一般人平时相对较少接触到的知识,想要看懂并不是一件容易的事情。因而,本文将带你详细分析源码,彻底搞懂获取数据包5元组的实现逻辑!


1.前言

在进行源码分析之前,先做几点说明:

  1. 后面涉及的内容建立在你已经阅读过l3fwd源码并理解l3fwd的整体程序逻辑基础之上,如果你还没不理解l3fwd代码的整体逻辑的话,建议先搞懂整体的程序逻辑,再回来看这篇文章,理解实现细节。
  2. 源码分析以ipv4为例,ipv6的分析十分类似,留给读者做为练习自行分析。

2.源码分析

Step 1:定位程序中获取5元组逻辑的位置,位于函数em_get_ipv4_dst_port()中:
在这里插入图片描述
根据注释,可以发现,调用函数em_mask_key()后,即获得了我们需要的5元组,所以,我们首先进入em_mask_key()函数看看这个函数做了些什么

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值