12 dog250

尚未进行身份认证

暂无相关简介

等级
TA的排名 7

程序员的两种职业特质

对简单的敬畏软件工程是复杂的工程,由于它几乎可以零成本试错,软件可以堆积到任意的复杂程度。一个简单的播放器软件,其复杂性也堪比建造幢别墅,更别说制作一双皮鞋。这使得创造软件的 程序员失去了对简单的敬畏!我没有针对某个程序员或者某个公司的程序员,我指的是包括我自己在内的所有程序员,并且,这并没有携带贬义的意思。这只是一种职业特质。程序员认为伟大的东西一定是复杂的,简单的东西只能是玩具,或者工...

2020-01-25 19:31:48

聊聊小世界网络和癌症

近期的新型冠状病毒引起了所有人的警惕,一旦其传播特征突破临界值,我们每个人都不能独善其身,因为,我们处在一个近乎六度分隔的小世界!此外,近几年来频繁有名人因患癌去世,感觉癌症就在我们身边,那么癌症机理是什么,我也想谈谈我的理解。快放假了,说实话也真的无心工作,反正时间也不能浪费了,那就思考吧。本文不准备长篇大论去说一些经理根本不care的理论,本文从几个实际的例子出发,简单聊聊。关于理论性...

2020-01-22 14:35:13

Linux内核模块与eBPF字节码程序的异同

如今eBPF正当红,迄至Linux 5.3内核,已经有24种eBPF程序类型被植入内核,后面还会继续增多。然而,很多人并不理解eBPF的意义。最大的疑问来自于, eBPF和Linux内核模块的作用一样吗?就功能以及性能而言,二者区别不大,而且,eBPF还远不如Linux内核模块强大,但是程序员不要总是盯着功能和性能,还要看架构。二者的根本不同在于:Linux内核模块是面向内核API编程的...

2020-01-21 17:18:31

为SandFS的FSHOOK增加netlink配置机制

正如iptables可以通过netlink将规则配置到Netfilter的HOOK点一样,我也希望实现一个fstables通过netlink将规则配置在FSHOOK的特定HOOK点。于是我实现了一个Demo,但并没有完成,因为后面遇到了问题,我不希望现在就解决问题,而是希望把问题描述一番。代码在sandfs_with_no_ebpf的devel分支:https://github.com/ma...

2020-01-21 16:24:25

实现一个Linux文件系统ACL防火墙-FS_HOOK简介

近日,我将一个基于eBPF实现的SandFS中的eBPF部分摘除了,形成了一个单纯的SandFS框架:https://github.com/marywangran/sandfs_with_no_ebpf纳尼?eBPF大红大紫之时,我竟然反其道而行之,这不犯了形而上学的错误了吗?没错,事实上我摘除它的原因是因为这个原生的eBPF-based-SandFS在我的两个开发环境中均没有编译通过:...

2020-01-20 21:13:43

基于eBPF的Linux沙盒文件系统SandFS

好玩的东西又来咯!我一向自诩自己是Netfilter的骨灰级业余玩家,但对于文件系统,我终究连入门都没有曾经。如果把Netfilter嫁接在VFS上会怎样?我没有亲自去做,因为我对VFS的API真的不熟。但是,由于始于Unix的文件系统模型在ACL方面确实是没有太多的建树,以至于除了chroot,isolated mount namespace这种粗暴的控制手段之外,没有更好的精细化AC...

2020-01-18 12:53:31

x86_64处理器的指针赋值是原子操作吗?

如题, x86_64处理器的指针赋值是原子操作吗?说实话我很讨厌参与讨论那些似乎不确定东西,倒不是说我对未知不敬畏,而是参与讨论的人大多数都是似懂非懂,对,我说的不确定性指的是参与讨论的人的认知的不确定,如果你自己都似懂非懂,那么我说什么你都可以反驳我,说些 “貌似,可能,并不绝对” 的词汇来让事情变得混乱。最近写了一篇文章:https://blog.csdn.net/dog250/arti...

2020-01-12 19:33:38

在别人的终端上执行Linux命令

你想偷偷摸摸干点不好的事吗?我的意思是,你干点坏事,比如把机器给halt,比重要文件删了,然后让人觉得这是别人干的,说白了,就是嫁祸于人,特别是经理,你想吗?本文我将提供一个比较low的偏门技巧。很多情况下,我们都用root登录一台服务器,并且不止一个人以root登录,像这样:可以看到分别打开了两个tty终端:我们希望在别人打开的其它终端中执行一些可怕的命令,比如 “rm -rf ...

2020-01-10 17:59:18

从一次NULL指针kernel panic说说内存屏障

See this very simple C code: n->next = first; n->pprev = &h->first; h->first = n;Would the third line be executed before the first two lines?A little different than you ...

2020-01-09 21:40:37

Linux旧版本内核nf_conntrck BUG一则

写这个已经没有实际意义了,毕竟本文涉及的是一个Linux 3.10老旧版本内核的一个nf_conntrack的BUG,之所以还是写下来是因为它既有情怀,又有意思。BUG的描述非常简单,就是在____nf_conntrack_find函数里面访问NULL指针系统崩溃了。我的任务找出它。这次不同于手艺人的做法,而是采用经理的作风来排查故障。所以,这次不用crash工具,不用stap,不用trac...

2020-01-04 09:03:55

eBPF/sockmap实现socket转发offload

我们已经对eBPF将网络转发offload到XDP(eXpress Data Path)耳熟能详,作为Linux内核的一把 “瑞士军刀” ,eBPF能做的事情可不止一件,它是一个多面手。socket数据offload问题通过代理服务器在两个TCP接连之间转发数据是一个非常常见的需求,特别是在CDN的场景下,然而这个代理服务器也是整条路径中的瓶颈之所在,代理服务器的七层转发行为极大地消耗着单机性...

2019-12-25 22:46:24

eBPF程序之间的协作-简单实现一个xdpdump

前不久,很多人问我有没有用过xdpdump,它是什么原理。当然,当时我是没有用过的,也就没有多说,不过我答应大家一旦我了解了之后,肯定会第一时间给大家介绍。最近在写一些测试小程序的时候,偶然间也有了XDP抓包的需求,也就顺便熟悉了一下xdpdump,最终,我自己写了一个简单的,主要是阐明它的原理。当然了,经理没有看这篇文章的必要。在XDP抓包不能使用tcpdump,因为tcpdump是基于...

2019-12-24 21:38:10

也谈谈公有云

先看一篇文章:Building backbone network infrastructure: https://connectivity.fb.com/news/fiber-optic-cable/看看FB干的事情,够宏伟吧。其实,不光FB,Google,AWS,甚至BAT都正在干或者准备干类似的事情…发生了什么。很早之前就看过一篇文章,就有人预测,公有云巨头最终会吃掉所有的网络设备厂...

2019-12-22 18:20:56

Linux 5.4一个关于SCHED_IDLE的小优化

一直在关注Linux内核调度器的相关进展,最近的一个关于SCHED_IDLE的小优化特别有意思。详情参见下面的lwn:https://lwn.net/Articles/805317/下面是其包含的patchset:https://lore.kernel.org/lkml/cover.1561523542.git.viresh.kumar@linaro.org/简单来讲,就是说:为一个进...

2019-12-21 09:05:29

eBPF对TCP listen socket lookup的逻辑进行重定义

eBPF让Linux内核(其它OS内核对eBPF的支持,我不清楚,仅谈Linux)本身变得可编程,前面我已经展示了eBPF很多的trick用法,本文我来展示如何让eBPF干涉socket的查找。我们知道,数据包到达四层后,会进行socket查找,以TCP为例,这个过程在tcp_v4_rcv函数中执行,所谓的查找过程就是一个简单的hash查找,然而hash查找算法的执行过程会随着输入数据的不同而产...

2019-12-20 17:28:28

Netfilter-Add support for hardware offloads

终于,该来的陆续都来了。例行浏览lnw,发现了个好玩的:netfilter: add hardware offload infrastructure: https://lwn.net/Articles/793080/玩Netfilter已经好多年了,这么多年Netfilter因为性能问题一直被诟病,但是说实话,直到现在我都不觉得Netfilter的性能低是个问题:iptables规则太...

2019-12-13 16:10:31

OpenVSwitch数据面流表cache机制浅谈

稍许笔墨写了一篇关于OpenVSwitch(以下简称OVS)的文章:https://blog.csdn.net/dog250/article/details/103492099但有些事情并没有说清楚。关于OVS的流表是如何映射成数据平面的Flow cache的,有必要单独写一篇文章来说一下。下面的Paper描述了整个过程的来龙去脉,不可不读:http://www.openvswitch....

2019-12-12 20:20:04

从总线式以太网到SDN交换机OpenVSwitch

本文结合自己的经历梳理一下以太网交换机发展的脉络。史前注定爆发的,必有缘由。以太网已经发展了30~40多年,我们必须从头说起。总线以太网最开始的以太网是总线以太网,所有的站点主机均连接在一条总线上,通过网桥可以连接两根总线:#####pic此时以太网的所有操作均在站点主机侧完成。总线以太网唯一的智能操作就是传输仲裁,这个是通过CSMA/CD来完成。总线以太网的特征在于: 中间没有盒...

2019-12-11 22:42:08

我对智能网卡offload的认识

传统的互联网服务处理模型是这样的:这是一个必须拆东墙补西墙的模型,整天不是这里CPU高了就是那里CPU爆表了,完全就是一脬屎。协议栈处理在软中断中进行,它可能是附着在任意进程上下文的,取决于中断发生时的current,如果这部分处理路径过长,留给业务处理的CPU时间便不多了,此外,CPU cache亲和力也是必须要考虑的。反之,如果业务逻辑处理很繁重,那就势必会造成网卡和软中断处理的积压。...

2019-12-08 09:02:52

Linux flow offload提高路由转发效率

凡是正确的东西,该来的最终还是会来的。 (当然了,经理可能也有同感。)来看看几年前我写的文章:利用nf_conntrack机制存储路由,省去每包路由查找: https://blog.csdn.net/dog250/article/details/24101425在Linux的连接跟踪(nf_conntrack)中缓存私有数据省去每次查找: https://blog.csdn.net/dog...

2019-12-07 08:38:52

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 技术圈认证
    技术圈认证
    博客专家完成年度认证,即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024超级勋章
    1024超级勋章
    授予原创文章总数达到1024篇的博主,感谢你对CSDN社区的贡献,CSDN与你一起成长。
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力计划专属勋章
    原力计划专属勋章
    参与原力计划活动,成功进入英雄榜即可获得