自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 DPDK网卡PMD驱动常用属性字段和API函数汇总

使用方法:rte_eth_dev_configure函数的struct rte_eth_conf的参数指定rxmode.mq_mode = RTE_ETH_MQ_RX_RSS_FLAG,rx_adv_conf.rss_conf指定哈希key。如果网卡支持RTE_ETH_TX_OFFLOAD_MT_LOCKFREE属性,则多个线程可以在没有锁的情况下,在同一个Tx队列上并发地调用rte_eth_tx_burst()发送报文。请注意,扩展统计信息标识符是驱动程序特定的,因此对于不同的端口可能不一样。

2023-06-08 22:40:48 1596

原创 DPDK官方文档说明

36、dpdk-pipeline:展示了与P4语言一致的软件交换机(SWX)管道的特性37、dpdk-eventdev_pipeline:使用软件PMD使用eventdev API。5、dpdk-dumpcap:支持条件过滤的抓包工具,它作为辅助DPDK进程运行,捕获进出DPDK主进程的数据包。33、dpdk-vdpa:通过使用vdpa后端创建vhost-user套接字34、dpdk-ip_pipeline :DPDK pipeline模式处理报文的示例。更详细的实现,可以看L2和L3转发示例应用程序。

2023-06-04 14:39:22 1614

原创 DPDK相关开源代码汇总

f-stack是基于DPDK(Data Plante Development Kit)实现的一个用户态的协议栈,从FressBsd协议栈移植而来的用户态协议栈。它的目的是通过编程扩展支持大规模网络自动化,同时还支持标准的管理接口和协议。dpvs是爱奇艺公司基于DPDK开发的高性能第4层负载均衡器(Layer-4 load balancer),dpvs的名字来源于DPDK+LVS,这里的LVS是阿里巴巴改进版的lvs。》中,我们讲了学习DPDK的相关资料,今天我们来讲一下DPDK相关的开源代码。

2023-06-01 21:22:58 606

原创 DPDK相关学习资料汇总

8.《DPDK应用基础》,作者:唐宏,柴卓原,任平,王勇,等 ,本书不仅深入浅出地介绍了DPDK的基础原理和安装调试方法,还详细介绍了DPDK在NFV中的应用场景和测试方法,并叙述了DPDK应用开发的技术细节和实践经验,是DPDK的入门,是了解NFV加速转发技术的指南。5.《深入浅出DPDK》(作者:张梅、许云杰)- 该书是目前市场上关于DPDK的最佳实践和最全面的参考书之一,既深入浅出地介绍了DPDK的基础知识,又详细地讲解了如何使用DPDK构建高性能的应用程序。

2023-05-31 21:36:08 1525

原创 DPDK常用工具的使用方法

在使用DPDK进行收发包时,经常会用到一些配套的工具来进行配置或者测试验证。

2023-05-18 22:13:57 923

原创 suricata中DPDK收发包源码分析2

suricata中分析了整体的DPDK收发包框架代码,今天我们继续来深入了解一下一些细节方面的问题。

2023-05-16 21:50:31 363

原创 suricata中DPDK收发包源码分析1

2)source-dpdk.c在RegisterAllModules()函数中调用TmModuleReceiveDPDKRegister()和TmModuleDecodeDPDKRegister()来注册DPDK对应的收包和解码两个module,大部分代码是对这两个module提供的API函数的实现,包括收包前的初始化和收取报文,解码前的初始化和报文解码。好了,关于suricata中DPDK收发包的初始化以及框架代码的分析就到这里了。

2023-05-14 21:36:19 517

原创 suricata中DPDK收发包线程模型和配置说明

suricata中DPDK的收发包线程模型以及相关的配置。

2023-05-11 22:00:51 895

原创 DPDK抓包工具dpdk-dumpcap的使用

dpdk-dumpcap工具是一个数据平面开发工具包(dpdk)网络流量转储工具。该界面类似于Wireshark中的dumpcap工具。它作为辅助DPDK进程运行,允许您捕获进出DPDK主进程的数据包。dpdk-dumpcap以Pcapng数据包格式写入文件。

2023-05-08 22:05:06 1674

原创 基于DPDK收包的suricata的安装和运行

先用lshw -C network -businfo命令找到网卡的pcie地址,然后在/usr/local/etc/suricata/suricata.yaml文件中配置suricata DPDK收包,主要修改interface和copy-iface配置。suricata是一个基于规则的入侵检测和防御引擎,功能强大,但性能可能 差强人意,不过目前最新的7版本已经支持DPDK收包了,DPDK是Intel提供的高性能网络收发包开源库,可想而知,suricata支持DPDK收包会带来性能的极大提升。

2023-03-30 11:09:03 1702 11

原创 DPDK的源码编译安装

操作系统版本:Ubuntu 20.04.5DPDK版本: 21.11Intel® DPDK全称Intel Data Plane Development Kit, 是intel提供的数据平面开发工具集,为Intel architecture(IA)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持。PATHPATHmake成功编译后,可以看到生成了igb_uio.ko驱动文件,后面会加载这个文件。cd dpdk/

2023-03-30 10:40:39 1109

原创 Hyperscan的源码编译安装

Hyperscan是一个正则表达式引擎,旨在提供高性能、同时匹配多个表达式的能力以及扫描操作的灵活性。要想实现高性能的字符串或者正则匹配,就可以使用它。操作系统版本: Ubuntu 20.04.5。Hyperscan版本: 5.3.0。

2023-03-30 09:03:52 939

原创 为什么Linux内核代码中有这么多的likely和unlikely

在阅读Linux内核代码时,我们可以看到在if/else结构中,都用到了likely和unlikely这样的判断,其实不只是Linux内核,很多开源代码,比如DPDK,suricata等等,都用到了它们。ps: 这里两次取反,是把x的表达式变成一个bool类型的值。那如果我们深究一下,为什么这些开源代码都热衷于在if后面加这么个宏定义呢?使用它到底有什么好处呢?碰到问题,我们习惯通过搜索引擎找答案,搜索引擎一般给出的答案是:通过likely和unlikely告诉编译器哪个条件分支发生的可能性更大。

2023-07-23 16:58:05 242

原创 什么是NUMA,我们为什么要了解NUMA

所以我们在NUMA架构下编写程序,要扬长避短,多核多线程编程中,我们要尽可能的利用CPU Core的亲和性,将线程绑定到对应的CPU上,并且该线程从该CPU对应的本地内存上去申请内存,这样才能最大限度发挥NUMA架构的优势,达到比较好的处理性能。CPU访问不同类型节点内存的速度是不相同的,访问本地节点的速度最快,访问远端节点的速度最慢,即访问速度与节点的距离有关,距离越远访,问速度越慢,所以叫做非一致性内存访问,这个访问内存的距离我们称作Node Distance。我们怎么可以感受到它的存在?

2023-07-17 21:05:44 1351

原创 libmagic通过mime来识别文件类型

比如想识别一个文件是不是jpg,通过查看mime.types文件,我们知道jpg对应的mime是image/jpeg,那么我们可以将文件通过libmagic识别,返回的mime与image/jpeg进行比较,这个比较是字符串的比较,可以用多模AC算法或者是哈希算法,就可以很容易的知道一个文件是不是jpg文件了。》文章的朋友应该知道,如果我们通过libmagic返回的描述信息来进行文件识别,有一个麻烦的地方是,我们无法获取到一个完整的文件描述信息列表,因为magic.mgc是二进制文件,我们看不到。

2023-06-29 00:12:24 269

原创 libmagic文件类型识别库源码分析

ligmagic的主要逻辑:启动时加载magic.mgc数据库的特征规则,然后读取要识别文件类型的文件内容,与magic.mgc的特征进行匹配,如果匹配上了,就表示确定了文件的类型,输出的是文件类型的一串描述信息。magic_file和magic_bufffer的区别就是magic_file需要先调用file_or_fd读取一下文件的内容和长度,然后再就都是调用file_buffer函数。》介绍了libmagic库的使用,今天我们来对libmagic库的源码做一个简单的分析。

2023-06-27 21:39:42 350

原创 libmagic文件类型识别库的使用

magic_buffer传入的是magic_t句柄,要识别的一段缓冲区的起始地址以及缓冲区的长度,其实就可以理解为我们把magic_file中的文件内容读到了一段内存中,然后进行识别的,差别不大。我们以下载的libmagic-5.25开发库为例,magic.h在include目录下,libmagic的库在lib目录下,magic.mgc文件在share/misc目录下。下载使用,如果想研究源码,就从github上下载file命令的源码进行研究。好了,libmagic库的使用就讲到这里了,是不是比较简单呢?

2023-06-26 22:02:07 702

原创 文件类型识别的实现思路

首先,用户上网传输文件一般大都是经过传输层的tcp协议,了解tcp协议的同学应该知道,tcp报文一般不分片,而是使用分段,那么一个文件一般都很大,所以一个tcp分段报文是传输不完的,那么一个文件必然就会存在很多tcp分段报文中,所以在进行文件识别和过滤之前,需要先将文件的内容正确的还原出来,所以第一步涉及到tcp分段的重组,当然今天重点只是讲文件识别和过滤,tcp分段重组下次再单独讲。完成tcp分段重组,重组文件内容之后,我们需要先识别文件的类型,那么如何识别文件的类型呢?那么文件过滤的功能是怎么实现呢?

2023-06-20 20:43:23 440

原创 Wireshark使用小技巧1 -- 查看http gzip压缩内容

有问题的朋友可以进技术交流群获取(先加我微信,备注加群)。http协议为了提高传输效率,会对传输内容进行压缩,比如gzip压缩。我们在用wireshark抓取http报文时,如果想查看gzip压缩的内容,该怎么看呢?在尝试了第一种方法后,其实我发现还有一种更简单的方法,在第二步骤中选中一个http报文(一定要Protocol这一列中显示http的报文),过滤一条http流。可以看到,除了左上角的logo,都能正常显示,因为这个logo是一个图片资源,是在另外一次http请求/响应中传输的,所以看不到。

2023-06-17 10:32:35 590

原创 FTP协议分析(主动模式和被动模式)

FTP协议(File Transfer Protocol,文件传输协议)是一种用于计算机之间传输文件的标准网络协议。它允许用户在不同的计算机之间进行文件传输和共享。通过FTP协议,用户可以通过网络连接到远程计算机上的FTP服务器,并进行文件上传、下载和管理。FTP协议的功能非常简单,它不仅可以支持不同平台之间的文件传输,而且还支持多用户和多任务处理。FTP客户端和FTP服务器分别作为不同的实体进行交互。

2023-06-13 20:51:26 2432

原创 开源杀毒引擎库libclamav的使用方法

中我们讲了ClamAV的安装和使用方法,可以很方便的使用ClamAV提供的工具进行病毒扫描,当然我们也可以在我们的程序中集成它提供的libclamav开发库来实现病毒扫描,libclamav是一个功能强大的病毒扫描库,提供了许多API函数来帮助开发者编写自己的病毒扫描程序。CL_INIT_DEFAULT是一个宏,可以传递给代表默认初始化设置的cl_init()。cl_init()完成后,就可以通过调用cl_engine_new()来创建新的扫描引擎了。函数返回一个静态分配的字符串。

2023-06-07 21:50:20 923

原创 开源杀毒引擎ClamAV的源码编译安装和测试

ClamAV是一款免费的开源杀毒软件,支持多种平台,如:Linux/Unix、MAC OS X、Windows,如果我们开发的网络产品想集成防病毒功能,但是又不想付费使用商业杀毒软件,ClamAV是一个不错的选择。7)扫描目录下是否有病毒文件:./clamscan ../etc/,可以看到,在/etc目录下放的一个测试样本文件,被ClamAV成功给扫描出来了。有问题的朋友,可以进网络技术开发交流群提问(先加我wx,备注加群)。好了,ClamAV的源码编译安装和简单测试,到此就已经大功告成了。

2023-06-06 22:09:47 1332

原创 suricata的flow流会话管理分析1

1)就是当流表内存不够用时,会有一个紧急状态机制FLOW_EMERGENCY,这个时候不同协议以及不同流状态的老化时间会大大的缩短,加速流表老化,以腾出更多的内存空间为新流所用,例如紧急状态下TCP流的初建阶段的老化时长默认值为FLOW_IPPROTO_TCP_EMERG_NEW_TIMEOUT 10秒,而对于TCP握手完成之后的流老化时长默认为FLOW_IPPROTO_TCP_EMERG_EST_TIMEOUT 100秒。创建流表时,先优先从这些节点上获取flow。喜欢文章内容的朋友,加个关注呗~~

2023-06-05 22:42:35 518

原创 关于f-stack转发框架的几点分析思考

f-stack的报文收发逻辑,简单一点说,就是先使用f-stack的lib库中的DPDK API接口把报文收上来,然后将报文给到移植的FreeBSD协议栈(也可以根据配置的端口,通过KNI过滤部分报文给Linux内核),上层的应用程序比如nginx或redis需要修改原有的socket的API为f-stack封装的socket API,就可以收到DPDK收上来的报文了。5、性能方便,f-stack在较少cpu core的表现较好,就是相同性能表现的情况下,可以比nginx用到的cpu的资源少。

2023-05-28 15:06:34 1069

原创 f-stack的源码编译安装

F-Stack是一个全用户态(kernel bypass)的高性能的网络接入开发包,基于DPDK、FreeBSD协议栈、微线程接口等,适用于各种需要网络接入的业务,用户只需要关注业务逻辑,简单的接入F-Stack即可实现高性能的网络服务器。),但是它并没有提供对应的IP/TCP协议栈,所以在网络产品的某些功能场景下(特别是涉及到需要使用TCP协议栈的情况),比如BGP邻居建立、nginx代理转发等等,都需要一套协议栈来实现这些功能。8、编译安装f-stack:​​​​​​​。

2023-05-28 14:59:09 1330 2

原创 suricata中的线程管理分析

在runmodes.c中定义了如下的线程命名,从中大概可以看出suricata存在哪些线程,由于我们重点关注的是DPDK的workers模式收包,所以无关的线程,我们暂时不关注(已在下面的线程名后面标识出来)一文中,我们讲到了suricata中如何自定义命令,现在我们来实践一下,加入threads-list和slots-list这两个自定义命令,分别查看suricata的线程列表以及指定线程的slots。有问题或者需要自定义命令源码的朋友,可以进网络技术开发交流群提问(先加我wx,备注加群)。

2023-05-23 22:31:24 213

原创 suricata的Decode协议解码流程源码分析

一般报文的解码流程比较简单,先确定报文的起始位置和总长度,这两个值在ReceiveDPDKLoop中PacketSetData函数,将DPDK mbuf的报文起始地址和报文总长度赋值给了suricata报文Pakcet结构体的ext_pkt和pktlen。DPDK解码流程的函数入口是DecodeDPDK,解码流程按照以太网层、网络层、传输层以及负载一层层找到报文中指定的位置,并且记录相关字段,最后在FlowSetupPacket函数中根据建流的需要打上相应的标记以及计算出流表的哈希值。

2023-05-22 21:58:02 642

原创 DPDK内存池使用注意事项1 -- 重复释放问题

DPDK提供了内存池的接口,可以很方便地让我们进行内存节点的管理分配,但是如果使用不当,可能会造成很隐蔽的问题。有问题的朋友,可以进网络技术开发交流群提问(先加我wx,备注加群)。喜欢文章内容的朋友,记得加个关注哦~~所以,我们在使用DPDK内存池时,为了避免这种问题出现,一定不能重复释放内存节点。好了,关于DPDK需要注意的重复释放的问题就讲到这里了。下面讲到的是DPDK内存池节点重复释放导致的问题。

2023-05-21 12:40:51 108

原创 suricata中command的实现分析和自定义命令方法

1)注册命令:在UnixManagerThreadSpawnNonRunmode函数中注册命令"just-test": UnixManagerRegisterCommand("just-test", Justtest, NULL, 0);SCEnter();int i = 0;

2023-05-20 12:10:10 358

原创 批量删除github工程仓库的办法

批量删除github上工程仓库的办法

2023-03-28 21:25:25 693 2

原创 应用层HTTP协议详解 - 跟小智一起学网络(5)

前言哈喽,小伙伴们,大家好,我是小智。前面的准备工作都做好了,现在我们就要真正开始学习网络协议知识了。在上一章节中,我们使用 Wireshark,简单分析过访问世界上第一个网站 http://info.cern.ch(后面简称 cern 网站)的 HTTP 报文,不过这个分析太过于简单。由于 HTTP 使用得非常广泛,在互联网公司面试中,HTTP 也被经常问到,所以我们有必要比较系统的来学习一下它。这个章节包含的内容如下:正文HTTP是什么HTTP,全称HyperText Transfer

2020-11-28 16:38:02 628

原创 网络报文分析工具的使用 - 跟小智一起学网络(4)

前言哈喽,小伙伴们,大家好,我是小智。在后面的网络知识学习中,都离不开对数据报文的分析。俗话说,工欲善其事,必先利其器。掌握网络分析工具的基本使用,对我们后面的学习会起到事半功倍的效果。网络世界中的数据报文(我们也叫它数据包)看不见摸不着,但是通过 Wireshark 这款软件,我们不仅可以抓取到报文,而且还可以详细分析报文的每个字段。这个章节包含的内容如下:tcpdump的安装由于前面安装的 CentOS 没有图形化界面,所以在 CentOS 里面不能直接使用 Wireshark 抓包,我们

2020-11-28 15:34:32 3065 6

原创 《跟小智一起学网络》教程目录

写在前面 - 跟小智一起学网络(1)计算机网络概述 - 跟小智一起学网络(2)Linux系统学习环境搭建 - 跟小智一起学网络(3)

2020-11-28 12:37:00 194

原创 Linux系统学习环境搭建 - 跟小智一起学网络(3)

前言哈喽,小伙伴们,大家好,我是小智。在正式开始学习网络知识之前,我们先把学习环境先搭建好,这样在后面学习的过程中,就可以边学习理论边实践啦。这个章节包含的内容如下:虽然我们日常生活或者在大学教学中,大都是使用 Windows 系统,但是实际工作进行软件开发时,使用 Linux 还是占绝大部分,所以我们学习环境的操作系统选择的 是Linux。安装 Linux 系统,最简单的就是在我们平时使用的电脑上安装一个虚拟机就行了。正文安装VMware Workstation安装 Linux 虚拟机,常

2020-11-28 11:56:55 266

原创 计算机网络概述 - 跟小智一起学网络(2)

《跟小智一起学网络》教程目录写在前面 - 跟小智一起学网络(1)前言哈喽,小伙伴们,大家好,我是小智。这个章节,主要让大家先了解一下计算机网络的全貌,能够从整体上建立对计算机网络的认识。主要包含的内容如下:正文计算机为什么要联网?计算机网络,顾名思义,就是由计算机组成的网络,而网络的定义是由若干节点和连接这些节点的链路组成。所以计算机网络,我们可以理解是由很多计算机和连接这些计算机的通信链路组成的一个网状的系统。那我们有没有想过,计算机为什么要组成网络呢?设想一下,如果我们正在使用的

2020-11-25 22:21:17 1139

原创 写在前面 - 跟小智一起学网络(1)

写在前面《跟小智一起学网络》是一个有关计算机网络的学习教程。这个章节是对教程的介绍,主要包含的内容如下:教程的特点1)重点突出,贴近实际教程对计算机网络教材中的重点章节进行深入讲解,所讲内容更贴近实际工作,让学习者能够做到学以致用。2)通俗易懂,学习门槛低教程通过大量的举例和配图,尽可能将复杂的问题简单化,学习门槛低,非常适合初学者。3)重视实践,兼顾理论教程坚持理论指导实践,实践检验理论的原则。通过网络工具的分析、对Linux系统的实际操作以及代码的编程,让学习者加深对网络理论知识的理

2020-11-22 11:48:08 350 2

原创 3. 计算机MAC寻址的这些细节,你真的懂了吗

小智的疑问小智: 大鹏哥,上节中你讲的QQ发消息的那个例子,我有个问题没太想明白,就是以太网报文头里面的目的MAC是从哪里来的啊?源MAC好理解,源MAC是我自己电脑网卡的MAC,肯定有办法获取到,可是目的MAC从哪里获取呢?还有目的MAC到底是谁的MAC,是目的主机的MAC吗?大鹏: 你问得很好,从这个问题开始,我们就慢慢开始深入到通信的细节了。首先我得说下,目的MAC其实有两种情况,如果是在“国内”通信,目的MAC是目的主机的MAC,如果要跟“国外”通信,目的MAC是源主机的网关的MAC。小

2020-10-21 23:39:20 1835 2

原创 2. 计算机网络中各个层次间是如何配合工作的

小智: 大鹏哥,上次你给我讲了网络分层,还有各个层次间的作用,可是我还是没搞清楚他们之间是如何配合一起工作的呢?协议报文大鹏:别急,在搞清楚这个问题之前,我们得先了解另外一个在网络中非常重要的概念——报文,报文是各种网络协议一起配合完成网络通信的最终实体,不管是哪种网络协议,不管协议多么复杂,也不管两台主机要互相发送什么内容,最终在网络当中传输的都是一个一个的协议报文。就像人说话,说的内容用文字记录,网络协议的内容是用报文来记录的。要搞清楚网络中各个层次之间配合工作的机制,通过看每层协议的报文就很可以很

2020-10-20 23:11:53 691

原创 计算机网络到底讲了些什么

小智:大鹏哥,我最近看了下计算机网络,把书上的内容都过了一遍,可是感觉还是串不起来,不知道计算机网络到底讲了些什么内容,也不知道重点在哪里,你能不能给我梳理梳理呀!计算机为什么要联网大鹏:行,那咱们就从“计算机网络”这五个字说起,计算机网络,顾名思义,就是由计算机组成的网络,那计算机组成网络要干什么呢?我们知道,不联网的计算机只能单兵作战,只能玩单机游戏,只能简单的处理文档,而通过联网,计算机可以玩网游,可以看电影,可以聊QQ,总之,计算机联网之后功能大大扩展。那回到刚刚计算机要组成网络的问题,很显

2020-10-18 19:08:24 6407 18

原创 有一个属于自己的网站是不是很酷呢,超详细的建站流程,我都给你总结好了

上篇文章Relax讲到希望在AR这个方向上做一些事情,落实到具体上肯定是要做一些东西出来,从软件层面来说,传统互联网兴起是以成千上万的网站呈现的,移动互联网是以成千上万的APP呈现的,当然其实还有别的方式,比如小程序,浏览器插件,自媒体等等,那么基本的,Relax自然也想搭建一个属于自己的AR内容网站。其实Relax的网站已经搭建好了,并且可以正常访问了,每个栏目下面都已经有了部分相关的内容,目...

2020-03-04 10:25:42 3193 6

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除