标签: network

16 篇文章

__builtin_prefetch 函数简介
前言 在高性能的网络转发中,比如 vpp/dpdk,通常对数据包采用批处理。批处理有很多好处:上下文的切换成本,会分摊给每一个数据包;CPU能一次性,将多个数据包所需的数据,加载到高速缓存中处理,减少了等待数据从主内存读取的次数,从而极大提升效率。 本文介绍,预取函数 __builtin_prefetch 。介绍它的使用和作用机理。 然后,做一个预…
性能敏感程序的编程注意事项
前言 网络场景的代码,对性能,比较敏感。 在编写性能敏感的代码,还是要有所留意。 下面的内容参考自:1. Performance Optimization Guidelines — Data Plane Development Kit 25.11 Writing Efficient Code 内存 尽量不要在数据面,进行字符串的拷贝拼接。 字符串的…
vpp 中 barrier 介绍 — 随笔
前言 vpp 的线程类型,可以分为控制面线程(vpp_main),和数据面线程(vpp_wk) root@localhost ~/w/3/vpp-upstream (master)# pidof vpp 2284230 root@localhost ~/w/3/vpp-upstream (master)# pidstat -t -p 2284230…
MPSC lock-free ring buffer的使用与分析
前言 多生产者多消费者(multiple-producer,multiple-consumer) 的无锁(lock-free)环形缓冲区(ring-buffer),有其特定的使用场景。 在一些高性能场景下,锁是绝对不能使用的。不仅锁不能使用,为了避免 cache miss,每个工作线程会选择使用 per-thread data方式,进行数据读取与写…
tproxy 简介
前言 我们在校园或者图书馆,会连接一些公共网络。在连接后,初次访问访问网络时,浏览器会自动跳转到一个登陆页面。这背后的原理嘛,不知道。 本文,将有个类似的实现。当访问任意一个地址的 80 端口时,这个访问将被劫持,并返回一个自定义的界面。这里,是为了感受下 tproxy(transparent proxy,透明代理) 的使用。 接着,我们将从内核源…
nftables的简单使用
前言 平时在工作中,接触到的还基本是 iptables 。 nftables 是 iptables的继任者。自 Linux 内核 3.13 开始,nftables即得到了支持,现在已经挺成熟的了。 所以,在日常工作中,当遇到需要 iptables的时候,或许应该优先使用 nftables。 关于 nftables的使用文档可参考:nftables …
iptables的基本使用
前言 本文介绍 iptables 的基本使用。 iptables 的四表五链 相关链接:来,今天飞哥带你理解 Iptables 原理!-iptables原理详解 首先得对四表五链有个基础的理解,否则没法写/理解规则。 网上查资料,我们能看到这个图。我搞不懂这个图,但这个图能让我知道不同规则的触发顺序。 下面将介绍介绍 iptables 的四表五链。…
rp_filter 介绍
原理介绍 相关链接: 2.2.11. Reverse Path Forwarding Red Hat Documentation RFC 3704 - Ingress Filtering for Multihomed Networks Linux内核参数之rp_filter - 知乎 rp_filter,即 Reverse Path fi…
GO项目中使用ebpf
前言 有时候 ebpf 程序不好写。因为想要写好ebpf,需要对内核中的处理流程有些了解。 照葫芦画瓢是程序员的强项。可是有时候没有合适的葫芦参考,不好画瓢。比如,在 nftables 的 output 链 上,挂载 hook 函数,提取四元组。这并不好做,至少我还没写出来。写 ebpf 是一个痛苦的过程:程序可能会加载到内核失败;加载成功了,运行…
修改默认的DNS服务器
问题描述 早上准备敲敲代码,从github上拉仓库时,提示我输入密码。 尝试了几次后,我定睛一看,域名解析不对。域名被污染。 问题解决思路 最终级的解决方案肯定时把DNS解析过程给代理出去。 但是,我感觉,这里换一个DNS服务器应该就没问题了。我当前的环境时ubuntu24。所以我来刷新下DNS解析缓存,换个DNS服务器试试。 resolvectl…