Switch-Router

Recent Posts

  • 2025-12-31

    解析 bpfsnoop:现代化 eBPF 内核追踪工具

    背景与技术演进传统内核追踪的痛点在 Linux 系统调试和性能分析领域,内核级追踪一直是开发者和运维工程师的重要工具。然而,传统的追踪技术存在诸多限制,严重影响了其在生产环境中的应用。kprobe 作为 Linux 内核最早的动态追踪机制,其工作原理是在目标函数的入口点插入断点指令(INT3),当 CPU 执行到该指令时触发异常处理。这种机制虽然功能完备,但带来了显著的性能开销。每次函数调用都会经历完整的异常处理流程(保存寄存器到栈->异常处理do_int3()->查找执行对应...

  • 2025-12-26

    解析 pwru:基于 eBPF 的网络包跟踪神器

    网络问题的排查往往是最令工程师头疼的挑战之一。当一个数据包在复杂的网络栈中”消失”时,传统的调试工具往往力不从心—— tcpdump 只能看到网卡层面的流量,而应用层的日志又缺乏底层网络的细节。数据包究竟在内核的哪个环节被丢弃?是防火墙规则?路由问题?还是 socket buffer 满了?如果你曾经为了追踪一个莫名其妙的网络连接超时而在对着 netstat、ss、iptables 输出发呆,那么今天介绍的这个工具会让你眼前一亮。pwru(packet, where are you?)(h...

  • 2025-12-20

    一种网络报文Relay方案的设计与实现

    互联网的单路径特性往往受到地理位置限制、网络拥塞和区域故障的影响。对于长距离报文传输, 易受公网波动的影响, 尤其对于像FPS游戏这类延迟和网络波动敏感的应用来说, 高延迟和高波动是影响游戏体验的元凶。受到ECMP(Equal-Cost Multi-Path,等价多路径)思想的启发, 本文介绍一种网络报文Relay方案的设计与实现。整个系统由控制中心 和 分布在全球的若干节点组成控制中心 负责中心化控制所有节点, 为后者下发控制信息以及从其中收集必要的节点间的连接状态信息.节点负责组成网络...

  • 2025-05-01

    实现一个通用命令行组件

    简介最近几天, 在 deepseek 的帮助下, 倒腾了一个通用的命令行组件. 它具有以下特点:1.易集成. 开发者只需要将2个源码集成到已有系统进行编译即可.2.易使用. 所有命令可联想, 可通过缩写输入命令.源代码仓库: https://github.com/switch-router-nat/cliii使用举例我们以注册3个命令的例子为例:CLI_COMMAND (test_show_instance_command) = { .path = "show instance", ...

  • 2025-03-30

    debian12 top -H 显示 CPU 利用率异常

    问题环境现象环境: debian12 (kernel 6.1.0)现象: 运行一个多线程程序(测试程序见文末), 其中主线程空闲, 2个子线程繁忙, 使用 top -H 观察其各个线程的 CPU 利用率可见, 此刻限制的主线程的 CPU 利用率异常地高.原因分析top命令来自于procps-ng包, 它通过定时读取/proc/PID文件系统下内核暴露的 tick 数据, 计算 CPU 利用率.如果不使用-H选项, 则读取的就是整个进程(或者说线程组thread group)的占用近况, 此...