看MikroTik暴打H3C,顺便对比选型网络方案

背景 机房有一台H3C的路由器,它同时负责接入和三层路由。今年偶然在传文件的时候发现速度奇慢,排查发现瓶颈在这台路由器,三层转发大包(SSH传文件)只有90Mbps左右了,转发率就不用算了吧,然后看路由器的control-plane和data-plane的负载都被打满了,应该是没走成交换芯片(快速路径),全部走CPU(慢速路径)处理去了。更重要的是,这台机器并没有使用ACL、VRF这种比较难offload的功能,如今掉速这么严重,不知道是触发了哪门子bug,再加上系统全部是黑盒,在没有购买官方支持的情况下,基本没有解决这种问题的可能了。 ...

2024-05-13

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

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

2023-03-25

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

当今时代下,高性能网络的需求日益增加,在图形渲染被独立成GPU、神经网络计算被独立成NPU后,网络数据的加速也被提上日程,将网络数据处理转移到DPU上,成为了业内共识。 这篇文章,趁着我手里刚好有几张DPU,我们就一起来看一下,DPU如何像GPU、NPU一样,帮助加速云原生容器网络。 ...

2023-03-11

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

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

2022-09-10

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

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

2022-05-20

重新定义“家用”路由器——500R不到捡华三商用垃圾(含方案与参考配置)

500元不到买台华三的商用机,28个千兆口,轻松拉满300M宽带,又可以起BGP起VRF,香就完事了。 注意 本文不打广告,仍然以技术为主。要是打广告博主就不会去捡垃圾了 前言 其实博主我跟MT(MikroTik,以下简称MT)家的设备和软件(RouterOS,以下简称ROS,注意不是机器人操作系统)还挺有渊源,印象里好像是从初三就开始用MT家的ROS了,到现在差不多也有接近9年了,然而,ROS才从那时的5.26更新到现在的6.48,期待已久的ROS 7.0现在连Testing阶段都还没到,是真的磨叽。在这9年的时间里,ROS与Linux的结合,算是让我相当清晰得搞明白了Linux的数据面和各种hook点的功能以及潜在的bug(因为ROS就是基于Linux),慢慢也让我开始决定抛弃这玩意,走上自研网络设备的路线。从一开始借用Linux的系统协议栈,到后来DPDK PMD数据面,再到现在eBPF XDP轻量数据面,快进一步到智能网卡和FPGA,无一不是为了更好地把这玩意替换掉,满足更多场景需要。 ...

2021-11-29

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

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

2021-11-14

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

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

2021-11-07

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

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

2021-08-25

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

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

2021-05-17