分类: 计算机

计算机相关的内容

59 篇文章

Computing the Internet Checksum
前言 checksum(校验和)是一种错误检测机制。它确保,数据包在传输过程中,没有被意外篡改或损坏。 IP、TCP、UDP 等互联网协议,依赖校验和来保证数据的完整性。 日常应用层的开发过程中,不关心,也看不到,checksum 字段。 但是,一旦我们想修改/构造 raw packet,checksum 的计算和校验,就是一个绕不开的问题。 本文…
C++标准和g++版本之间的关系
前言 最近,在编译 CS144/minnow 的时候,遇到了一个报错。 cs144/util/debug.hh:3:10: fatal error: format: No such file or directory 3 | #include <format> 在 AI 的帮助下,这个问题非常好解决。切换下 gcc 版本即可。 # 当前…
gdb下多线程的调试
前言 以前,了解过 gdb 的简单使用:GDB调试与栈帧解析-CSDN博客 后来,感觉 vscode 的调试真方便,就一直使用 vscode 来调试代码了:VSCode下Linux环境下C++调试指南:配置与实践-CSDN博客 gdb 还是挺挺复杂的一个工具。 本文以 vpp/src/plugins/dpdk/device/node.c 为例,了解…
交换机简介
注:我没在参与过,生产场景下,交换机的开发和维护,所以有点纸上谈兵。当年的计算机网络课程,也学的稀烂,就当补补课吧。 交换机简介 二层交换机 找 AI,抄抄答案。 二层交换机是工作在OSI模型第二层(数据链路层)的网络设备,其核心功能是基于MAC地址,在局域网内进行以太网帧的快速交换。其工作原理可以概括为三个核心机制:学习、转发/过滤、泛洪,并辅以…
DPDK中RSS的简单使用
RSS 是什么 RSS(Receive side scaling) 是一种网络驱动技术,它能高效地将网络接收处理任务分配到多处理器系统中的多个 CPU 上。 下图是它的一般处理逻辑:图片来源(Toeplitz Hash Library) 网卡驱动程序,提取数据包信息,可以是四元组{src_ip, dst_ip, src_port, dst_port…
dpdk-dumpcap vs dpdk-pdump
前言 最近看了 dpdk-dumpcap和 dpdk-pdump的实现过程。写篇文档总结下~ 把大象放在冰箱里面分为三步:打开冰箱、放进大象,关上冰箱。 网络抓包的流程也是如下: 先在数据包上执行 bpf filter,判断数据包匹配。 将匹配的数据包,发送给应用层程序。 应用层,将数据包保存到 pcap/pcapng 文件中。 dpdk-dump…
DPDK中网卡的绑定分析
前言 在DPDK中,通常使用 dpdk-devbind Application 来 bind/unbind 设备。 在vpp中,vpp/src/plugins/dpdk/device/init.c at master · FDio/vpp 在程序启动的时候,自动bind设备。 本文,将探究下,DPDK场景下,网卡设备的bind/ubind过程。 P…
新站点-回撤
前言 有一天我死了,我希望我的数字遗产,可以再存在十年。 目前,我使用wordpress,记录文档内容。但是,wordpress 属于是有状态的服务。它必须间隔打理打理,要不然,站点可能就挂了。 我希望找一个 saas ,来记录我的文档内容。 找了一圈,我选择了 confluence cloud :https://da1234cao.atlassi…
telegraf 简介
前言 网路场景中,为了极致的压榨性能,会选用 DPDK 这类 kernal bypass 机制:DPDK and Kernel Bypass: When Microseconds Matter More Than Your Sanity - The Internet Papers 性能提升是实实在在的。我们谈论的是在现代硬件上每秒处理 1000 万…
__builtin_prefetch 函数简介
前言 在高性能的网络转发中,比如 vpp/dpdk,通常对数据包采用批处理。批处理有很多好处:上下文的切换成本,会分摊给每一个数据包;CPU能一次性,将多个数据包所需的数据,加载到高速缓存中处理,减少了等待数据从主内存读取的次数,从而极大提升效率。 本文介绍,预取函数 __builtin_prefetch 。介绍它的使用和作用机理。 然后,做一个预…