本文记录一次IPsec VPN检测时ESP解密失败问题的定位过程。涉及到IPsec VPN协议、加密算法、内核xfrm框架等知识。
systemtap与bpftrace使用评估及对比
eBPF和systemtap这两个非常强大的工具,它们弥补了静态调试工具的不足,可以完成很多静态调试工具无法完成的事情。例如很多跟时序相关的问题、概率性偶发的问题、压力测试下才能出现的问题、以及像云上这种不方便调试的环境,可能只能通过动态调试的手段来定位分析问题。
它们将进程本身当作是一个数据库,从中获取所关心的信息进行活体分析。当然前提是你得对这个数据库本身有足够的了解,知道去哪里获取信息,以及获取什么信息。对于内核态就是对内核本身的理解,在用户态则是对用户程序的理解。
本文只是浅浅地试用评估了一下两者,并做了简单对比。要想熟练使用,功夫在诗外!
OpenSSL的async异步框架/OpenSSL协程
OpenSSL异步框架是在OpenSSL-1.1.0上引入的一个新特性。它理论上可以应用于任何的异步操作,但当前主要是用于在引擎框架中执行的加密学操作。本文首先介绍其底层原理,接着介绍OpenSSL的异步基础设施,最后着重分析ASYNC_JOB(OpenSSL中的协程)的处理流程(dispatcher和job之间是如何切换的)。
Linux内核中隐藏的兵法—以逸待劳
Linux内核中隐藏的兵法—移花接木
之前在Linux内核中隐藏的兵法—无中生有一文中,我们探究了Linux中的进程创建,着重介绍了进程0和fork系统调用。本文我们将继续探究,另一个与进程创建相关的重要系统调用:execve。看看它又是葫芦里卖的什么药。
Nginx的SSL性能测试
虽说标题写的是SSL性能测试,但其实是不是SSL都无关紧要,只是测试的配置有所不同罢了。相比具体某个指标的测试方法,我们更应该关注的是性能测试的一般原则。具体的测试指标可能随着测试业务、测试环境而千差万别,但是核心的测试方法论是不变的。
因为笔者对SSL的性能测试比较熟悉,所以将以SSL性能测试主要关注的3个指标为例进行分享:每秒新建连接数、最大吞吐量、最大连接数。
Linux内核中隐藏的兵法—无中生有
不管是什么领域,建造往往比销毁困难得多。建造一个大楼可能需要几年的时间,而销毁它也许就是几秒钟的事情。究其根本,因为建造是个熵减的过程,必须有来自系统外的能量输入。而创建中有一类问题显得更为特殊,那就是起源的问题。第一个生命如何诞生?人类又是如何起源的?诸如此类的问题,人类从未停止探究。。。
而今天我们要探究的主题是Linux中的进程创建。大部分的人可能都知道fork,都知道进程就是像细胞分裂一样分出来的。那么你是否清楚下面这些:为了分裂它需要准备什么?所谓分裂到底分了什么,又遗传了什么?遗传物质是如何传递的?第一个进程又是怎么来的?
接下来就让我们一起来探索这些问题吧!
OpenSSL CVE-2022-0778漏洞问题复现与非法证书构造
本文介绍CVE-2022 0778漏洞及其复现方法,并精心构造了具有一个非法椭圆曲线参数的证书可以触发该漏洞。
Linux内核是如何启动的
本文介绍Linux内核的引导启动以及初始化流程,从你按下电源开始到你最终进行终端登录,这期间到底发生了什么?
Nginx的共享内存管理--slab算法
初次了解到slab算法,是在学习Linux内核时。内核中采用了伙伴系统(Buddy System)算法对内存页面进行管理。但是对于小对象,还用页面分配器就显得有些浪费了,于是slab就应运而生了,内核的kmalloc()就是使用slab进行管理的。nginx中的共享内存管理使用了相同的思想,当然它没有Linux内核中的slab那么复杂。