自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Netfilter,iptables/OpenVPN/TCP guard:-(

我不会编程,但也不是一点都不会,我稍微会一些 :-)

原创 从DPDK和eBPF感受一下Smart NIC

安德森先生这周从上海来过周末,小小给妈妈外婆讲了刚学到的恺撒加密算法,而我,写一篇随笔吧。 周三晚上,我演示了Linux下一代防火墙bpfilter的一个自制简易POC: 前天晚上在家加班处理问题,一顿操作后没响应了,以为系统panic了,就等待重启,远程登录的设备,就不知道是不是真p...

2019-11-30 18:05:52

阅读数 1491

评论数 1

原创 Linux下一代防火墙bpfilter是什么?让我演示给你看

昨晚为了解决公司的一个bug熬了个夜,等待期间花了半小时撸了一个bpfilter的简易POC,今早发了个朋友圈: 且看这个链接:https://lwn.net/Articles/747504 这个POC还是复杂了,而且标准发行版里根本就不可用,ko模块不可执行,依然是标准模块。 原理...

2019-11-27 22:58:31

阅读数 1653

评论数 15

原创 Linux的socket reuseport与eBPF

今天晚上和小小一起学习,上个晚自习。 已经是reuseport骨灰级玩家了,所以简单写。 最开始,Linux协议栈并没有完全兼容BSD的reuseport语义,也就是说,Linux 3.9之前,所谓的reuseport仅仅有socket热备份功能,没有socket负载均衡功能,但是很快在3.9内...

2019-11-25 22:33:30

阅读数 1378

评论数 0

原创 聊聊C语言和指针的本质

坐着绿皮车上海到杭州,24块钱,很宽敞,在火车上非正式地聊几句。 很多编程语言都以 “没有指针” 作为自己的优势来宣传,然而,对于C语言,指针却是与生俱来的。 那么,什么是指针,为什么大家都想避开指针。 很简单, 指针就是地址,当一个地址作为一个变量存在时,它就被叫做指针,该变量的类型,自然就是...

2019-11-24 21:07:34

阅读数 14771

评论数 22

原创 Linux /dev/mem的新玩法

/dev/mem里有什么 简单来讲,/dev/mem是系统物理内存的映像文件,然而这里的 “物理内存” 需要进一步解释。 物理内存是指我们插在内存槽上的内存条吗?当然是,但物理内存不单单指内存条。 物理内存严格来讲应该是指 物理地址空间 ,内存条只是映射到这个地址空间的一部分,其余的还有各种...

2019-11-23 18:26:49

阅读数 1710

评论数 6

原创 深圳-上海-呼伦贝尔-漠河-哈尔滨环行手记

C语言的精髓是指针,这是手艺人的小幸运,但这是程序员的悲哀。 今年(2018年春节前)的假期比较特殊,我这一出去就是20多天,请了十来天的年假…1月27号就出发离开深圳了,考虑到1月25号和1月26号两天是公司安排的惠州团建,相当于我这个悠长假期从1月25号就开始了,因此这篇手记也就开始于201...

2019-11-23 18:23:57

阅读数 1490

评论数 4

原创 Linux net namespace的另类玩法

作为一个手艺人,像下面写的这么玩才看上去像个匠人。能手工完成的就不用工具。一个问题有了一种解决问题的方法后,还要再想个更麻烦的方法。 本来想周末写下来的,可是周末事情排的很满,只好压缩工作日的时间了,因此,行文可能便不会那般流水,但是意思确实达到了。 你能想象通过网络远程登录到一台Linux机器...

2019-11-21 21:54:51

阅读数 1382

评论数 1

原创 实现一个基于XDP/eBPF的学习型网桥

eBPF技术风靡当下,eBPF字节码正以星火燎原之势被HOOK在Linux内核中越来越多的位置,在这些HOOK点上,我们可以像编写普通应用程序一样编写内核的HOOK程序,与以往为了实现一个功能动辄patch一整套逻辑框架代码(比如Netfilter)相比,eBPF的工作方式非常灵活。 我们先来看...

2019-11-17 06:46:05

阅读数 1640

评论数 2

原创 使用eBPF将网络功能Offload到网卡

安得广厦千万间,大庇天下寒士俱欢颜,风雨不动安如山! 近五六年,经济突飞猛进,互联网行业更是宇宙无敌,又是AI又是区块链的,如火如荼…人们纷纷从国外回到国内,希望过上神仙般的日子,出国瞬间就成了zz不正确的事情… 然而… 大图景展翅,细微之屏风安在? 糟糠裂缝,屎尿连珠,practitio...

2019-11-16 08:04:11

阅读数 1718

评论数 0

原创 实现基于XDP/eBPF的快速路由转发功能

周末用eBPF实现了学习型网桥的XDP快速转发路径之后,再来用eBPF实现一个快速路由转发。同样很有意思。 关于eBPF和XDP的前置基础知识,我在前面实现网桥转发路径前已经概览过了,所以本文不再赘述。 当我们面对各种网络技术的时候,路由和交换技术是最基本的。路由和交换有什么区别,为什么不能像实...

2019-11-11 20:56:10

阅读数 1828

评论数 5

原创 Linux bridge桥接两个VirtualBox虚拟网络

这篇文章缘起于这段时间我对拆东墙补西墙这种工作方式的抱怨。 先是磁盘空间不够用,配发的电脑仅仅剩余12G的空间,不能外接硬盘,暂时也不能上传备份,相当于一台离线的机器吧。我却要完整编译一个4.19版本的Linux内核…于是没日没夜的,我开始人肉压缩再释放的操作,不得开心颜。最终我还是搞定了问题,不...

2019-11-08 15:59:46

阅读数 1478

评论数 1

原创 eBPF用于Linux防火墙数据包过滤

自基于Netfilter的iptables取代ipchains之后,Linux防火墙技术貌似一直停留在iptables,虽然近年来nftables被宣称有取代iptables之势,但事实上并无起色。 无论是晚期ipchains,还是iptables,或者nftables,其底层基础均是Netfi...

2019-11-03 18:14:48

阅读数 1834

评论数 5

原创 Linux crash工具结合/dev/mem任意修改内存

Linux内核程序员几乎每天都在和各种问题互相对峙: 内核崩溃了,需要排查原因。 系统参数不合适,需要更改,却没有接口。 改一个变量或一条if语句,就要重新编译内核。 想稍微调整下逻辑却没有源码,没法编译。 … 解决每一类问题都需要消耗大量的时间,特别是重新编译内核这种事情。于...

2019-11-01 22:47:47

阅读数 1374

评论数 3

原创 Linux C程序访问NULL指针

本文将介绍如何对NULL指针地址建立合法映射,从而合法访问NULL指针。本文表达的宗旨: 任何虚拟地址,只要有合法的页表映射,就能访问! 提到C语言编程,我想几乎所有人都遭遇过NULL指针。我们的代码中总是在不断的判断指针是否为NULL: if (p1 != NULL) { ...

2019-11-01 21:07:36

阅读数 1330

评论数 2

提示
确定要删除当前文章?
取消 删除