自制高性能白盒交换机——缝合OVS-DPDK和Go语言

我有一台小主机,来自Lenovo的M73t,CPU型号为i3-4130T,内存为DDR3仅有8GB。这篇文章,我们就一起来看看,如何用这一台已经过时的、仅有两个物理核心的机器,做一台高性能的白盒交换机。

阅读更多

DPU如何加速云原生容器网络?

当今时代下,高性能网络的需求日益增加,在图形渲染被独立成GPU、神经网络计算被独立成NPU后,网络数据的加速也被提上日程,将网络数据处理转移到DPU上,成为了业内共识。

这篇文章,趁着我手里刚好有几张DPU,我们就一起来看一下,DPU如何像GPU、NPU一样,帮助加速云原生容器网络。

阅读更多

Kubernetes与KubeSphere上车指南

2022年了,开发需要各种应用时,不用再像以前那样挨个手工安装一整天了,直接上K8S就好啦~

这次,博主我上了一套3节点的集群,其中包含1个Master、2个Worker,前端选择了开源的KubeSphere,网络组件选择了性能好、又能起BGP的Cilium。由于本次部署是作为日常开发环境,操作上少了一些合规的考虑,仅供尝鲜和入门使用,生产环境部署需再细致研究。

阅读更多

重构——让XDP为轻量SDN数据面再加速

上一篇文章我们一块来看了eBPF XDP的性能之路和场景,文中对于Ring也进行了简单的描述,但是真正当我重构起来那个包时,这么多的Ring究竟在内存中的哪个位置?哪些数据之间又是重叠的?本篇文章,我们就来顺腾摸瓜,看看这玩意更低层级是什么样子的。

阅读更多

解读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的魅力~

阅读更多

OpenWrt+FRRouting+Ifman:天下没有不能成为SD-WAN CE的路由器

出于成本考虑,博主我对OpenWrt系统进行了定制,期望任何一个OpenWrt的机器都能够成为SD-WAN的CE。这个定制里加入了FRRouting和我自己的接口管理套件Ifman,运行在一台MT7620的路由器上,就可以实现分布式网关的Symmetric/Asymmetric特性。两个MT7620的路由器和一台1C1G的虚拟机(RR),已经可以舒舒服服玩起来了~

阅读更多

Open vSwitch和DPDK在CentOS8的部署

最近在学DPDK,借助DPDK的优化,转发平面的包转发性能提升了将近10倍,这一指标实在是太香了。刚好同时担任助教在讲相关方面的课程,趁此机会顺便封装一个最小环境,顺便尝试部署一下OVS,一边为课程提供一个实验环境一边为后边落地提供一个保障。

阅读更多