dpdk l2forward example + hyperscan

简介: 1.如何实现端口过滤 2.如何实现协议过滤 dpdk收包nb_rx = rte_eth_rx_burst(portid, 0, pkts_burst, MAX_PKT_BURST); 解析包的五元组 l2fwd_parse_ipv4_5tuple(m, &tuple); 判断五元组中port与协议与给定值是否相同 if (tuple.
1. GITHUB路径
https://github.com/MiterV1/dpdk-hyperscan

1.如何实现端口过滤
2.如何实现协议过滤

dpdk收包
nb_rx = rte_eth_rx_burst(portid, 0, pkts_burst, MAX_PKT_BURST); 解析包的五元组 l2fwd_parse_ipv4_5tuple(m, &tuple); 判断五元组中port与协议与给定值是否相同

if (tuple.port_src == get_ui_port_filter_src_port() || tuple.port_dst == get_ui_port_filter_dst_port()) {
    dump_pcap_write(dump_fd, m);
    continue;
}

if (tuple.proto == proto) {
    dump_pcap_write(dump_fd, m);
    continue;
}

相同则将包数据写到pcap文件中

3.如何实现应用过滤

先计算五元组的hash值,先在hash表中查看是否包含该hash项
如果有该hash项则说明为某条应用流,直接dump到pcap文件
m_data.hash = rte_hash_hash(m_data.handle, &tuple);
m_data.tuple = &tuple;

int ret = rte_hash_lookup_with_hash(m_data.handle, &tuple, m_data.hash);
if (ret > 0) {
    dump_pcap_write(dump_fd, m);

    如果在hash表中未找到该hash项,那么说明需要对该数据包进行匹配,使用hyperscan提取其中的特征信息
    if (hs_scan_stream(g_streams[m_data.hash % 4096], rte_pktmbuf_mtod(m, char *),
            rte_pktmbuf_data_len(m), 0, g_scratch, eventHandler, &m_data) != HS_SUCCESS) {
        fprintf(stderr, "hs_scan_stream error.\n");
    }
    
    调用scan_stream函数对数据包匹配之前编译的规则信息,如果匹配成功则调用eventHandler函数
    该函数将添加该流信息到流表中,用于后续的流表匹配
static int eventHandler(unsigned int id, unsigned long long from,
                        unsigned long long to, unsigned int flags, void *ctx)
{
    printf("Match for pattern \"%d\" at offset %llu\n", id, to);

    struct matched_data *mdata = (struct matched_data *)ctx;
    rte_hash_add_key_with_hash(mdata->handle, mdata->tuple, mdata->hash);

    return 0;
}


4. GTK3.0 GUI界面

使用GTK3.0添加前端界面与后端程序进行交互,效果如图所示:
gui


4. 源码安装相关

工程目录如下所示:
dpdk  hyperscan  l2fwd-hyperscan

1. 安装hyperscan
sudo apt-get install cmake
sudo apt-get install libboost-all-dev
sudo apt-get install ragel
sudo apt-get install libpcap-dev
sudo apt-get install sqlite3

cmake CMakeLists.txt
make
2. 安装并编译DPDK
3. 绑定网卡

4. 编译工具
    export RTE_SDK=你的DPDK路径到x86_64-native-linuxapp-gcc级别:例如/home/user/work/dpdk/x86_64-native-linuxapp-gcc
    export HYPERSCAN_SDK=你的hyperscan路径:例如/home/user/work/hyperscan
    cd l2fwd-hyperscan
    cd src
    make

5. 启动工具
    cd ../
    ./l2fwd-hyperscan -c 1 -n 1 -- -p 1
目录
相关文章
|
Ubuntu Linux 编译器
openssl 的编译(linux、Ubuntu) 和 交叉编译(arm、Hi3531A)的问题分析、解决
openssl 的编译(linux、Ubuntu) 和 交叉编译(arm、Hi3531A)的问题分析、解决
3090 0
|
运维 关系型数据库 OLAP
阿里云百炼 x AnalyticDB向量引擎, 搭积木式轻松开发专属大模型应用
对大模型应用跃跃欲试,但奈何技术栈复杂难以下手?已经进行试水,但缺乏调优手段无法保障召回率和问答准确度?自行搭建大模型、向量检索引擎、服务API等基础组件难以运维?大模型种类繁多,但缺乏行业模型和应用模板?阿里云百炼 x AnalyticDB向量引擎推出一站式企业专属大模型开发和应用平台,像搭积木一样轻松完成企业专属大模型应用的开发,提供应用API,可一键接入企业自己的业务应用对外提供服务。
3201 2
|
存储 Linux C语言
Linux C/C++之IO多路复用(aio)
这篇文章介绍了Linux中IO多路复用技术epoll和异步IO技术aio的区别、执行过程、编程模型以及具体的编程实现方式。
806 1
Linux C/C++之IO多路复用(aio)
|
12月前
|
人工智能 大数据 云计算
OSFP MSA发布液冷标准Cage
2025年4月,阿里云基础设施网络团队提案的分离式OSFP cage,获得OSFP MSA委员会全票通过,合入OSFP MSA Rev 5.2 发布,成为行业首个支持OSFP冷板液冷的cage标准。分离式cage凭借低成本、易组装、易维修、产业链分层解耦的优势,能解决高密AI交换机的光模块液冷难题。
|
算法
重磅!2025年中科院预警期刊名单正式发布!
中国科学院文献情报中心定期发布《国际期刊预警名单》,旨在防范学术不端和不当出版行为。2025年最新名单聚焦两大问题:一是引用操纵、论文工厂等破坏科研生态的行为;二是中国作者占比过高或APC费用不合理,影响学术成果国际化传播。自2022年起,预警名单调整至年初发布,便于科研人员规划投稿。名单结合定量数据与专家评估,动态反映期刊风险。被列预警期刊可能影响职称评审及科研经费认可,建议优先选择中科院分区表推荐期刊,警惕快速代发陷阱,并关注期刊官网声明。未来,强化学术自律和技术工具应用将助力科研规范化,推动中国学术走向全球。
1261 0
|
算法 关系型数据库 测试技术
WHQL微软驱动签名方案,让驱动程序在Windows系统流畅运行
WHQL认证(Windows徽标认证)是微软设立的严格测试标准,旨在确保驱动程序的兼容性、稳定性和互通性。本文介绍了三种WHQL微软驱动签名方案:单系统签名、多系统签名和硬件兼容性测试方案,分别满足不同开发商的需求。通过WHQL认证,不仅能消除Windows安装警告,提升用户体验,还能获得“Designed for Windows”徽标授权,入列全球Windows Catalog及HCL产品表,提升品牌权威性和采购优先权。此外,访问微软OCA可获取错误反馈,助力产品质量改进。选择合适的签名方案,让驱动在Windows系统中流畅运行!
|
存储 SQL 缓存
PolarDB-X 在 ClickBench 数据集的优化实践
本文介绍了 PolarDB-X 在 ClickBench 数据集上的优化实践,PolarDB-X 通过增加优化器规则、优化执行器层面的 DISTINCT 和自适应两阶段 AGG、MPP 压缩等手段,显著提升了在 ClickBench 上的性能表现,达到了业内领先水平。
|
存储 缓存 网络协议
DPDK:UDP 协议栈的实现
DPDK:UDP 协议栈的实现
|
tengine 弹性计算 运维
性能提升一倍!云原生网关支持 TLS 硬件加速
业界在优化 HTTPS 的性能上也做了诸多探索,传统的软件优化方案有 Session 复用、OCSP Stapling、False Start、dynamic record size、TLS1.3、HSTS 等, 但软件层面如何优化也无法满足流量日益增长的速度,加上 CPU 摩尔定律已入暮年,使得专用硬件卸载 CPU 密集型运算成为业界一个通用解决方案。
2175 108
性能提升一倍!云原生网关支持 TLS 硬件加速

热门文章

最新文章