- 博客(43)
- 资源 (6)
- 收藏
- 关注
原创 c++中 lambda表达式使用
在这个示例中,我们使用了两个lambda表达式。第一个表达式用于对vector进行从小到大的排序;第二个表达式用于输出所有奇数。C++11引入了lambda表达式,它是一个匿名函数对象,可以在代码中被直接定义和使用。指定了lambda表达式的返回类型,如果省略则会根据函数体自动推断出返回类型。指定了lambda表达式的参数列表,与普通函数的参数列表类似。是lambda表达式的函数体,与普通函数的函数体类似。指定了lambda表达式中所使用的外部变量,可以使用。来表示不捕获任何外部变量,也可以使用。
2023-04-28 16:56:42
225
原创 DNS 查询原理详解
DNS(Domain Name System)是互联网上的一种命名系统,它将域名转换为IP地址。在进行DNS查询时,先要明确需要查询的主机名,然后向本地DNS服务器发出查询请求。
2023-04-27 17:23:11
1621
原创 dpdk多进程收发的代码,其中接收进程4个,发送进程4个
该程序可以在多个物理核心上同时运行,每个核心都运行一个DPDK进程。在启动前,您需要指定一个可用的网络接口端口ID。该程序将为指定的端口配置4个接收队列和4个发送队列。请注意,此代码示例仅提供基本框架,您可能需要根据自己的需求进行修改。
2023-04-27 17:20:48
247
1
原创 vpp怎么写node
VPP(Vector Packet Processing)是一个高性能的数据平面开源项目,用于构建网络功能虚拟化(NFV)和软件定义网络(SDN)解决方案。在VPP中,节点(Node)是数据包处理的基本单元。每个节点都执行一些特定的功能,并且可以相互组合形成流水线,完成复杂的数据包处理任务。是最重要的函数,它通过循环获取所有输入数据包,并对每个数据包进行处理。函数,用于对输入数据包进行处理,并将结果发送给下一个节点或者输出口。可以看到,节点的实现主要包含了创建、处理和清理三个函数。清理节点函数:实现一个。
2023-04-27 17:16:35
574
原创 dpdk实现负载均衡
DPDK是一个高性能数据包处理框架,可以在x86平台上通过使用DPDK库来实现高速网络数据包处理。DPDK提供了一组API和驱动程序,使用户能够利用硬件特性进行快速、低延迟的数据包处理。负载均衡是一种常见的网络应用,它可以将流量分配到多个后端服务器上,以实现高可用性和可扩展性。下面介绍如何使用DPDK实现负载均衡。
2023-04-27 17:11:03
1063
原创 Vpp plugin quic源码
Vpp plugin quic是一款基于VPP(Vector Packet Processing)的插件,实现了QUIC(Quick UDP Internet Connections)协议。
2023-04-25 21:16:33
577
原创 10个DPDK相关面试题及其回答
DPDK(Data Plane Development Kit)是一套开源工具集,可用于构建高性能数据平面应用程序。它提供了一组优化的用户空间库,可在Intel处理器上实现高速数据包处理。DPDK可以帮助网络设备制造商、服务提供商和企业创建低延迟、高吞吐量的应用程序,以优化网络效率。DPDK的主要组件包括:(1)librte_eal:提供了DPDK应用程序的环境抽象层,包括内存管理、CPU亲和性、线程调度、锁和同步等功能。
2023-04-25 21:14:35
1310
原创 实现dpdk分片重组
DPDK分片重组的实现原理是在内存中维护一个待重组的缓存池,对接收到的分片进行缓存,等到所有的分片数据到达后进行重组,然后再将重组好的大数据报送往网络协议栈进行后续处理。DPDK是一个用户空间的高性能数据包处理框架,可以用于以太网接口的快速报文处理。DPDK的分片重组功能能够将大于MTU的报文分片进行重组,以达到提高数据传输效率的目的。值得注意的是,DPDK的分片重组需要耗费大量的CPU和内存资源,因此在设计DPDK应用程序时应该仔细考虑内存和CPU的使用情况,以确保应用程序的高性能和稳定性。
2023-04-25 21:11:58
356
原创 分析spdk nvmf配置流程和相关接口,对比HWSAN相关功能,分析overtcp和overfc的配置
SPDK(Storage Performance Development Kit)是一个用于存储应用程序开发的开源工具包。SPDK提供了一个专注于数据存储的 I/O 框架,并且能够通过将应用程序的逻辑处理与核心数据路径分开来提供低延迟,高吞吐量的存储传输。下面我将分别回答您的问题。
2023-04-25 20:36:44
647
原创 DPDK rte_flow_action的全部类型
头文件中查找到所有的宏定义。另外,也可以通过第三方实现来支持自定义的动作类型。的动作类型是由固定的宏(constants)来定义的,可以在。
2023-04-25 20:29:16
698
原创 DPDK的rte_flow_item和rte_flow_action
在上述示例代码中,我们创建了一个匹配以太网、IPv4、TCP头和端口号的规则数组和一个操作指令数组,然后调用。对象组成,每个对象定义了对匹配到的数据包要采取的操作,例如将数据包转发至某个端口,丢弃数据包等。流表中的每个规则都包含了一个匹配规则和一个操作指令。匹配规则由一个或多个。对象组成,每个对象匹配数据包的一个协议头或相关字段。操作指令由一个或多个。函数创建了一个流表。这个流表可以根据匹配规则。来对数据包进行转发或其他处理。
2023-04-25 20:26:15
362
原创 DPDK rte_flow中为一个设备创建多个流表
最后通过嵌套循环创建每个流表中的多个流规则,并存储在。这段代码首先定义了需要创建的流表和流规则的数量,然后通过。函数创建多个流表,并存储在。
2023-04-25 20:23:08
304
原创 DPDK配置网卡FDIR
在DPDK中,使用流量分布(FDIR)功能可以对数据包进行流分类和过滤操作。结构体来配置FDIR灵活报文协议。这些配置将使DPDK能够使用指定的网卡进行流分类和过滤操作。以及相关的哈希表来启用FDIR功能。具体而言,我们使用了。函数获取了FDIR统计信息。库函数来启用FDIR功能,用。在这段代码中,我们通过配置。函数创建了哈希表,用。
2023-04-25 20:20:25
444
原创 DPDK配置rte_flow流量规则
需要注意的是,这只是一个简单的流规则示例。实际应用中,需要更加细致地配置流规则以满足具体的网络需求。同时,流规则的配置也需要考虑性能、安全等方面的问题,以确保系统的稳定和安全。这里是一个简单的DPDK配置。
2023-04-24 22:26:36
480
原创 dpdk可靠TCP传输
上述示例代码实现了发送可靠的TCP报文,并在收到ACK确认报文后才会继续发送下一个数据包,实现了TCP可靠传输。同时,这个示例代码使用了DPDK提供的一些协议实现函数,并使用了DPDK提供的函数库(如Mbuf、PMD、EAL等)来提高网络数据包处理的性能。需要注意的是,示例代码实现仅仅是一种简单的实现方式,并且仍然有改善的空间。你还需要查阅官方文档并阅读相关处理方案,以确定如何最佳实现你所需要的功能。
2023-04-24 22:22:06
201
原创 kvm虚拟机监控
KVM虚拟机监控指的是通过监控KVM虚拟机的运行状态、性能等信息来优化虚拟机性能、确保虚拟机安全性以及进行故障诊断和排除的过程。:一个开源的数据可视化工具,可以将Prometheus等监控系统的数据转换成漂亮的图表和仪表盘,方便用户进行可视化的监控和分析。:一种基于时间序列数据的监控系统,可以监控KVM虚拟机的性能、资源使用情况,并提供可视化的Dashboards和警报功能。:KVM默认的虚拟机管理工具,可以用于创建、启动、停止和管理虚拟机,也可以查看虚拟机的状态、资源使用情况、日志等信息。
2023-04-24 15:44:19
733
转载 libvirt管理kvm虚拟机
总之,使用libvirt可以方便地管理KVM虚拟机,包括创建、启动、停止和管理虚拟机等操作。同时,libvirt还提供了完整的API和命令行工具集,方便用户进行更加高级的管理和监控操作。3.创建虚拟机:使用libvirt创建虚拟机时,可以手动编写XML文件描述虚拟机的配置,也可以使用图形界面工具(如virt-manager)来创建虚拟机。6.管理虚拟机:除了启动和关闭虚拟机外,还可以使用virsh命令来管理虚拟机,例如查看虚拟机状态、配置信息、修改虚拟机配置等操作。
2023-04-24 14:13:57
954
原创 “VFIO group is not viable ”该如何正确配置
确保您的系统支持IOMMU(输入/输出内存管理单元)并已启用。将“YOUR_DEVICE_PCI_ADDRESS”替换为您要分配给VFIO组的设备的PCI地址。确定要分配给VFIO组的设备的PCI地址。使用virt-manager或其他虚拟化软件配置虚拟机以使用VFIO组中的设备。如果您看到输出,则表示您的系统支持IOMMU并已启用。找到您要分配给VFIO组的设备的地址,并将其记下来。安装VFIO驱动程序。重新启动系统以使更改生效。
2023-04-22 16:42:24
1311
原创 TLSR8258 zigbee协议栈代码分析
TLSR8258 Zigbee协议栈支持节点自组网功能,即网络中新加入的节点可以通过与已有节点进行自动协商,自动加入网络。在TLSR8258 Zigbee协议栈中,定义了很多数据结构,如网络节点描述符、簇描述符、属性描述符等。其中应用层负责应用数据的处理和管理,Zigbee网络层实现网络拓扑管理和路由协议,MAC层负责接收和发送数据帧,PHY层则负责物理层数据发送和接收。TLSR8258 Zigbee协议栈是一款功能齐全、易于使用的无线网络协议栈,具有很高的可扩展性和可靠性,适用于各种物联网应用场景。
2023-04-22 16:40:44
536
原创 Enter PCI address of device to bind to IGB UIO driver
从上述命令的输出中找到要绑定到UIO驱动程序的网络设备的PCI地址,然后将其输入到提示符中。例如,PCI地址可能类似于“0000:03:00.1”。这是一个DPDK绑定设备到UIO驱动的提示。您需要输入要绑定到UIO驱动程序的网络设备的PCI地址。
2023-04-22 16:37:32
123
原创 dpdk19.11支持xdp的程序
该示例程序可以通过命令行参数设置XDP程序路径、接口名称和队列ID。示例XDP程序可以自己编写,也可以使用已有的XDP程序。在此示例中,我们使用了libbpf库来加载XDP程序并将其附加到指定的接口和队列上。程序还提供了信号处理器,以便在程序退出之前正确地卸载XDP程序。DPDK 19.11支持使用af_xdp和libbpf来实现XDP程序。
2023-04-22 16:31:20
340
原创 vpp中的lcp_itf_pair_create函数解析
LCP接口对是VPP中用于实现L2TP(Layer 2 Tunneling Protocol)协议的一个结构体,包含了两个LCP接口,用于建立和维护隧道通信。函数主要用于创建LCP接口对结构体,并将其保存到全局变量lcp_main中,同时向VPP发送一个消息,以便VPP可以在内部建立L2TP隧道通信。该函数接收3个参数:父接口的索引,LCP接口的索引和LCP接口对的索引。其中,父接口指的是需要建立隧道通信的物理接口或虚拟接口。函数分配一个LCP接口对结构体,并将父接口和LCP接口的索引值保存到该结构体中。
2023-04-22 16:29:09
304
原创 vpp中的linux-cp插件的lcp_itf_pair_create函数解析
该函数会创建一个新的进程来运行LCP程序,以便在父接口和LCP接口之间建立隧道通信。函数类似,主要用于创建LCP接口对结构体,并启动LCP进程以便在内部建立L2TP隧道通信。函数分配一个LCP接口对结构体,并将父接口和LCP接口的索引值保存到该结构体中。函数类似,接收3个参数:父接口的索引,LCP接口的索引和LCP接口对的索引。在VPP中,linux-cp插件是一个可选的插件,用于实现L2TP隧道的。该插件提供了一些函数来管理LCP接口对的创建和删除。最后,函数会计算出LCP接口对的索引值并返回。
2023-04-22 16:23:32
642
原创 ipsec.conf 各配置含义
esp:ESP (Encapsulating Security Payload)的配置参数,例如加密算法、认证算法等。需要注意的是,ipsec.conf 文件的内容和格式可能会因操作系统、版本以及实际应用场景而有所不同。type:连接类型,例如 tunnel、transport、roadwarrior 等。ike:IKE 阶段 1 的配置参数,例如加密算法、认证算法等。left/rightid:身份标识符,例如主机名、IP 地址等。conn:连接名,表示需要建立的安全连接的名称。
2023-04-20 17:49:03
1093
原创 spdk使用vhost-user实现虚拟机磁盘访问的c代码
该代码使用SPDK和vhost-user实现了一个简单的虚拟机磁盘访问方案。它连接到一个NVMe设备,并将其映射到两个vhost SCSI设备上。在vhost循环中,我们可以看到如何通过vhost_scsi_dev_add_lun将NVMe命名空间映射到vhost SCSI设备上。在main函数中,我们还使用pthread_create来创建一个线程,该线程将在后台运行并处理vhost通信。以下是一个使用SPDK和vhost-user实现虚拟机磁盘访问的C代码案例。
2023-04-20 17:47:24
128
原创 ipsec.d/default.secrets 配置
在上面的示例中,有两个用户(xauth_user1和xauth_user2)可以通过EAP-MSCHAPv2进行XAUTH TLS认证,并使用指定的密码进行连接。此外,文件中还定义了两个预共享密钥。第一个可用于与IP地址10.0.0.1的远程端点进行VPN连接,而第二个则可用于与CIDR子网掩码为192.168.1.0/24的远程端点进行VPN连接。ipsec.d/default.secrets文件是IPSec VPN连接中用于预共享密钥(PSK)认证的配置文件。建议先备份原始文件,以防意外问题。
2023-04-20 17:45:50
326
原创 Netfilter框架
Netfilter框架是Linux内核中的一个重要部分,它提供了一种机制,使得内核可以检查、修改和丢弃进出网络接口的每个数据包。Netfilter框架中共有五个表,分别为:raw表、mangle表、nat表、filter表和security表。钩子函数被注册到特定的位置,当有数据包经过该位置时,就会调用相应的钩子函数。Targets是Netfilter框架中最终的操作者,它们根据所在的表和钩子点执行特定的操作。通过钩子、表和目标的组合,可以实现各种自定义的网络数据包处理需求。
2023-04-20 17:43:25
232
原创 centos 7 怎么固定IP
注意:以上步骤适用于 CentOS 7 及以后版本。在 CentOS 6 及以前版本中,网络配置文件的位置和内容略有不同。如果看到inet后面的IP地址是固定的,那么就说明已经配置好了。打开终端,使用 root 用户身份登录。
2023-04-20 17:42:08
923
原创 后台开发岗的精进基石——数据结构与算法,现在弥补还不算太晚!
数据结构与算法,重不重要?我觉得这是一个值得讨论的问题,大家有没有发现越大的公司,越爱在面试的时候考数据结构与算法的问题,几乎必问!(国内的有些公司可能除外)。为什么?原因很简单,算法题就是对面试的一个筛选,如果你是一个面试官,有两个人过来面试,一个算法很好但是对框架不是很熟悉,另一个反之。你会选谁?答案不言而喻。虽然第二个人并不熟悉某些特定的技术框架, 但我们也有理由相信, 他能迅速学习并胜任工作。况且现在技术更新迭代速度如此快, 只有学习能力强的程序员才能适应时代的发展, 而这样的人往往便是算法功
2021-01-05 21:19:17
363
1
原创 2021春招没有项目可写?6大企业级实战项目,让你拿下面试offer!
2020已经到了尾声,还有多少小伙伴还没有上岸呢?如果你也错过了秋招与提前批,那明年的春招就得好好准备一下了。对于校招的小伙伴来说,面试遇到最大的问题是什么?很多朋友和我说是缺乏实战的项目,基础技术在平时刷题已经OK了,可以在实际的运用却很匮乏。不要急,这里给大家推荐六大企业级练习项目,助力2021春招,让你拿下面试offer!一、大数据存储云盘系统(QT)项目技术内容:1.云盘架构设计与实现2. 网盘注册/登录模块3. 项目正则表达式应用4. 文件数据上传模块5. common文件设.
2020-11-06 16:08:25
2807
4
原创 自学软件编程,如何拿到京东秋招offer
大家好,今天给大家分享一下我的自学编程成长之路,给一些和我一样不是软件专业却想跨行到互联网的小伙伴一些参考和借鉴吧。我本科是学地质专业的,之后也保了研。但是在读研一的过程中,在一些学习过程中会用到软件开发的一些技术,所以就在平时会自己去稍微学习一下。至于到现在会为什么彻底的从土木转到软件开发行业呢?那是在我在读完研一的时候,和朋友一起在讨论对于人生职业的规划,觉得在工作的生涯中,个人的自我价值体现是很重要的,想到自己在这行业内以后的存在可替代,就不禁有了跨行到软件专业的念头,于是我便开始学习编程。可.
2020-10-29 16:27:29
381
1
原创 Linux学习环境搭建-VMWare安装Ubuntu16.04
常用的linux系统为ubuntu和centos。技术分享公众号【Linux开发架构之路】VMWare安装Ubuntu16.04一 概述• VMware Workstation 12的安装(略过,自行百度)• Ubuntu16.04的安装• 克隆出多个镜像二 Ubuntu16.04的安装1 准备• Window10 专业版(关闭Hyper-V)• Ubuntu16.04 下载2 安装• 点击新建虚拟机自定义并下一步选择自己Workstation版本并下一步选择下载好的u
2020-09-19 16:43:31
206
原创 协程性能测试
测试环境:4台VMWare 虚拟机1台服务器 6G内存,4核CPU3台客户端 2G内存,2核CPU操作系统:ubuntu 14.04服务器端测试代码:https://github.com/wangbojing/NtyCo客户端测试代码:https://github.com/wangbojing/c1000k_test/blob/master/client_mutlport_epoll.c按照每一个连接启动一个协程来测试。每一个协程栈空间 4096byte6G内存 –> 测试协程数量100
2020-07-21 20:38:53
281
原创 协程的实现之调度器
问题:协程如何被调度?调度器的实现,有两种方案,一种是生产者消费者模式,另一种多状态运行。7.1 生产者消费者模式逻辑代码如下:while (1) { //遍历睡眠集合,将满足条件的加入到ready nty_coroutine *expired = NULL; while ((expired = sleep_tree_expired(sched)) != ) { TAILQ_ADD(&sched->ready,
2020-07-16 17:47:19
411
原创 协程的实现之定义
协程的实现之定义问题:协程如何定义? 调度器如何定义?先来一道设计题:设计一个协程的运行体R与运行体调度器S的结构体运行体R:包含运行状态{就绪,睡眠,等待},运行体回调函数,回调参数,栈指针,栈大小,当前运行体调度器S:包含执行集合{就绪,睡眠,等待}这道设计题拆分两个个问题,一个运行体如何高效地在多种状态集合更换。调度器与运行体的功能界限。6.1 运行体如何高效地在多种状态集合更换新创建的协程,创建完成后,加入到就绪集合,等待调度器的调度;协程在运行完成后,进行IO操作,此时IO并
2020-07-15 16:59:47
248
1
原创 协程的实现之切换
协程的实现之切换问题:协程的上下文如何切换?切换代码如何实现?首先来回顾一下x86_64寄存器的相关知识。x86_64 的寄存器有16个64位寄存器,分别是:%rax, %rbx, %rcx, %esi, %edi, %rbp, %rsp, %r8, %r9, %r10, %r11, %r12,%r13, %r14, %r15。%rax 作为函数返回值使用的。%rsp 栈指针寄存器,指向栈顶%rdi, %rsi, %rdx, %rcx, %r8, %r9 用作函数参数,依次对应第1参数,第2参数
2020-07-10 19:35:28
1094
原创 协程的实现之原语操作
协程的实现之原语操作问题:协程的内部原语操作有哪些?分别如何实现的?协程的核心原语操作:create, resume, yield。协程的原语操作有create怎么没有exit?以NtyCo为例,协程一旦创建就不能有用户自己销毁,必须得以子过程执行结束,就会自动销毁协程的上下文数据。以_exec执行入口函数返回而销毁协程的上下文与相关信息。co->func(co->arg) 是子过程,若用户需要长久运行协程,就必须要在func函数里面写入循环等操作。所以NtyCo里面没有实现exit的原语操
2020-07-10 15:18:54
540
协程的实现与原理剖析实战教程,解决你面试中被问晕的协程问题
2020-08-27
2020IT互联网公司面经整理.pdf
2020-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人