解读eBPF XDP性能之路:它如何向着DPDK看齐?它在实际中又能带来多大效益?

相信使用过Linux的AF_PACKET类型socket的朋友都知道,性能不是特别好,而且似乎引入了一个新的问题——用户态程序要处理所有来的报文(可能也能绑定socket,博主我没有尝试过),这应该是相当拉胯了。使用eBPF XDP处理完美解决所有问题,还附带了UMEM共享内存,省掉了不少CPU时钟,不仅能解决云原生场景下的一些性能和潜在问题,还能顺带做个SD-WAN,能不香吗?(手动狗头

阅读更多

初探DPDK——环境准备与编写第一个简易的NAT程序

博主早期使用Golang+TAP/TUN实现了对数据包L2/L3级别的操作,但是很显然这么做也会有很大的问题——用户程序的数据包发出到TAP/TUN,还要再复制到用户态程序处理,然后通过用户态程序的套接字再从主网卡发出,这样一来既延长了数据路径,又带来了多次的用户态内核态间的数据拷贝,整体上造成的指令数不容小觑。DPDK则可以完全解决这个问题,本篇文章则为对DPDK的一个开端,在完成开发环境准备的同时,博主我稍微修改了l2fwd例程,使得其能够实现一个简易的NAT操作(不能用的那种),感受一下DPDK的魅力~

阅读更多

云上搬砖——Code Server落地实践

如今2020年了,甚至都可以说2021年了,在行业一直推行“上云”的这一背景下,越来越多的企业服务开始从私有云转移到了公有云上。在企业纷纷上云提高自身效率的同时,我也一直在想有什么办法来提高个人的开发效率呢?写个代码一直都强调高内聚低耦合,我们的生产力工具和开发系统本来也就要进行解耦,以避免掉太多对终端设备的依赖,来应对突发状况下或者一些特殊的环境依赖需要。今天,无意中发现了一个新的东西——Code Server,即一个VS Code的网页端,也是一个开源软件,借助Code Server,终于有了一个完全托管于云上、无需再过多依赖本地终端的环境。

阅读更多

golang搬砖填坑指南 1

写这篇文章是因为这两天在写一个运维小工具,自动备份数据并加密上传到对象存储用的,由于牵扯到备份,免不了需要压缩,在使用golang做数据压缩时出了点问题,本文针对这个问题做相关研究和探讨。

阅读更多