分类目录归档:搞网络

MikroTik RB450Gx4测试性能:一核有难三核围观

在上一篇文章中,我准备使用 MikroTik RB450Gx4 做出口网关,这样 CRS326 做一个弱三层的角色,用交换芯片抗东西向流量,南北向的给这台 RB450Gx4,直接用 CPU 跑。

新买的 RB450Gx4 到货了,投入使用前拿来测一下,看看和官方的数据差多少,摸个底。

继续阅读

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

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

继续阅读

稳定又好用——RouterOS+OpenWRT旁路由家庭网络

大家好,最近想了想决定在博客开辟“网络方案”的板块,结合博主我所熟悉的MikroTik、H3C、华为等商用设备以及基于Linux的网络系统(如常规发行版Linux、VyOS、OpenWRT),为大家推荐一些能够覆盖家用、工作室及小规模办公室的网络方案,这些方案有各自的侧重点和缺点,适合不同场景使用,当然如果你有你独特的需求,也欢迎和我一起讨论~

这篇文章,我们就先来看看博主我自己家的网络方案。

继续阅读

网络系统基准测试——DPDK Pktgen使用记录

我们自己的数据面系统如何打流测试呢?如果使用Linux协议栈上的测试工具往往是测不出来真正的数据的,而且受制于协议栈,我们最终也无法得到真实的收发情况,因此这时候我们要请出基于DPDK开发的一个打流测试工具——Pktgen。

继续阅读

看看Linux Kernel——基于Macvtap互通问题追溯根源

Linux上遇到一个问题——macvtap的虚拟接口无法和parent互通,这个问题让我不禁感到奇怪。以往都是同一个parent上的macvtap间互访,还真没有留意过访问parent是什么样一个情况。libvirt的wiki告诉我它确实是不能互通的,这或多或少激起了我对macvtap与bridge区别的一个好奇,Google未果,只能沿着Linux的内核代码走一遍了。

继续阅读

重构——让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的魅力~

继续阅读