- 博客(948)
- 资源 (59)
- 收藏
- 关注
转载 连接跟踪(conntrack):原理、应用及 Linux 内核实现
本文介绍连接跟踪(connection tracking,conntrack,CT)的原理,应用,及其在 Linux 内核中的实现。代码分析基于内核4.19。为使行文简洁,所贴代码只保留了核心逻辑,但都给出了代码 所在的源文件,如有需要请查阅。水平有限,文中不免有错误之处,欢迎指正交流。// 为方便 NAT 的实现,内核将 tuple 结构体拆分为 "manipulatable" 和 "non-manipulatable" 两部分// 下面结构体中的 _man 是 manipulatable 的缩写。
2024-03-20 16:32:46 107
转载 内核通信之 Netlink 源码分析和实例分析
这几天在看 ipvs 相关代码的时候又遇到了 netlink 的事情,所以这两天花了点时间重新把 netlink 的事情梳理了一下。linux 内核一直存在的一个严重问题就是内核态和用户态的交互的问题,对于这个问题内核大佬们一直在研究各种方法,想让内核和用户态交互能够安全高效的进行。如系统调用,proc,sysfs等内存文件系统,但是这些方式一般都比较简单,只能在用户空间轮询访问内核的变化,内核的变化无法主动的推送出来。
2024-03-08 13:14:56 69
转载 What Is eBPF? The Ultimate Guide
What Is eBPF? The Ultimate Guide - The New StackeBPF stands for extended Berkeley packet filter. Find out everything you should know about Linux eBPF in this comprehensive technology guide.Dec 26th, 2023 2:00am by B. Cameron GainLogo courtesy of the eBPF F
2024-03-03 18:29:41 28
转载 理解 TCP rate sample
内核中的 TCP rate sample 被 bbr 这样的拥塞控制算法使用,它总共也就不到200行代码,其中一半还是注释,但理解起来可能还是需要花点力气。本文将尝试解释它的实现原理.本文使用的内核代码版本是一句话概括, rate sample 的结果是在** interval **时间内发送的报文被网络成功(成功送达)的数目。比如, 5s 内, 成功送达了 10个报文、10s 内成功送达了 15 个报文 …. 等等.
2024-03-01 09:29:44 33
转载 linux-network-performance-parameters
【代码】linux-network-performance-parameters。
2024-02-28 20:13:09 16
转载 使用 eBPF 扩展内核
扩展型柏克莱封包过滤器 (eBPF) 是一个内核中的虚拟机,可运行用户提供的 eBPF 程序来扩展内核功能。这些程序可以挂接到内核中的探测点或事件,并用于收集有用的内核统计信息、监控和调试。程序使用bpf(2)系统调用加载到内核中,并作为 eBPF 机器指令的二进制 blob 由用户提供。Android 构建系统支持使用本文所述的简单 build 文件语法将 C 程序编译为 eBPF 程序。如需详细了解 eBPF 内部构件和架构,请参阅。
2024-02-26 14:16:15 26
转载 通用内核映像(GKI)
是所有 Android 产品内核的基础。供应商内核和设备内核位于 ACK 的下游。供应商通过修改内核源代码并添加设备驱动程序,添加了对 SoC 和外围设备的支持。这些修改内容可能很多,以至于设备上运行的代码中有多达 50% 是树外代码(并非来自上游 Linux 和 AOSP 通用内核)。几乎所有设备都具有自定义内核。这就导致了内核碎片化问题。Android 内核层次结构导致碎片化问题。
2024-02-26 14:03:38 346
转载 L2TP/L2TP over IPSec
二层隧道协议L2TP ( Layer 2 Tunneling Protocol )是虚拟私有拨号网VPDN ( Virtual Private Dial-up Network )隧道协议的一种,扩展了点到点协议PPP ( Point-to-Point Protocol )的应用,是远程拨号用户接入企业总部网络的一种重要VPN技术。LAC:L2TP的访问控制中心,隧道发起方,企业分支的出口网关,用于站点到站点建立L2TP VPN,企业分支发起的L2TP VPN建立连接,中间不用经过运营商(场景三)
2024-02-07 08:40:39 122
转载 linux路由表配置
D、解决方法,由于在table 0中添加路由只能解决目的地址或目的网络不同时路由问题,但两块网卡有相同的子网,网关也一样,目的子网也一样,所以已经不能通过在table 0添加路由记录来解决问题,我们只能添加其他编号的table,并在新的table中添加路由记录,使eth1的包选路时使用新的table的路由记录,并从eth1上出去。路由规则的查看使用ip rule sh路由规则也从0开始编号,可以自由添加,来源相同IP的路由规则选择根据规则编号的大小确定优先级,编号越小优先级越高。
2024-02-04 16:25:10 106
转载 利用qemu+gdb在ubuntu下搭建调试kernel的环境
在A Terminal中运行以下命令 qemu-system-x86_64 -kernel bzImage -boot c -m 1024 -initrd initramfs.img -append "root=/dev/sda rw console=ttyS0, 115200 acpi=off nokaslr" -serial stdio -display none -s -S。如果需要调试内核的kvm模块,则向上述命令添加 -enable-kvm。
2024-01-14 20:48:10 99
转载 Tc: ingress policing and ifb mirroring
【代码】Tc: ingress policing and ifb mirroring。
2024-01-11 13:46:33 54
转载 Linux Netfilter and Traffic Control
SFQ 之所以被称为“随机”,是因为它并不是真的为每一个会话创建一个队列,而是使用一个散列算法,把所有的会话映射到有限的几个队列中去。它的精确性不如其它的方法,但是它在实现高度公平的同时,需要的计算量却很少。Linux就而言,队列规定是附带在网卡上的,所有在这个网卡上排队的数据都排进这个队列规定。令牌桶过滤器(TBF)是一个简单的队列规定:只允许以不超过事先设定的速率到来的数据包通过,但可能允许短暂突发流量朝过设定值。就象在分类的队列规定一段中解释的,过滤器用与把数据包分类并放入相应的子队列。
2024-01-11 08:42:22 47
转载 QoS in Linux with TC and Filters
filters:bytes.bpfcgroupscope.flowerfwalready.routetcindexbpfconnmarkcsumiptmirrednatpeditpolicesimpleskbeditvlanConclusion----------
2024-01-10 20:21:43 112
转载 Obtain Kernel Config from Currently Running Linux System
【代码】Obtain Kernel Config from Currently Running Linux System。
2024-01-10 16:21:24 30
转载 Linux-4.4-x86_64 内核配置选项简介
Linux-4.4-x86_64 内核配置选项简介 [金步国]作者:金步国版权声明本文作者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。无担保:本文作者不保证作品内容准确无误,亦不承担任何由于使用此文档所导致的损失。 自由使用:任何人都可以自由的阅读/链接/打印此文档,无需任何附加条件。 名誉权:任何人都可以自由的转载/引用/再创作此文档,但必须保留作者署名并注明出处。其他作品本文作者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣
2024-01-10 16:10:21 238
翻译 OpenSSL硬件加速实现
OpenSSL 可通过引擎接口将加密操作委托给各种硬件设备进行执行。在该接口之上实现的引擎 cryptodev 可用于将加密操作卸载(offload)到由操作系统内核控制的硬件设备上。Cryptodev 引擎最初是为 OpenBSD 开发的,后来相同的 API 被移植到 GNU/Linux 操作系统,通过 OCF 和 cryptodev-linux 等多个驱动程序来实现。
2024-01-07 21:31:28 313
翻译 加密硬件加速
本文主要讲述如何在 OpenSSL 中使用加密硬件加速(crypto hardware acceleration)。许多互联网应用程序,如 OpenSSH 和 OpenVPN,依赖于 OpenSSL 进行加密/解密。因此,使用硬件实现可以加速加密速度,减少CPU使用率。
2024-01-07 21:22:24 173
转载 探秘ftrace
当然,如果你再仔细看,将ftrace_trace_function赋值成ftrace_ops_list_func在某些地方还有特殊的用途。也就是表明,相同的探针,在不同的情况下会执行不同的代码。之前我们是从文件写操作ftrace_filter_write开始的,而这个秘密就隐藏在文件关闭的操作ftrace_regex_release()函数中。在函数ftrace_regex_release(),对于写操作执行的重要任务通过ftrace_hash_move_and_update_ops()来完成。
2024-01-07 20:36:53 30
转载 OpenSSL 1.1.1: Hardware acceleration for OpenSSH via IBMCA engine
【代码】OpenSSL 1.1.1: Hardware acceleration for OpenSSH via IBMCA engine。
2024-01-03 19:25:37 28
转载 Configuring OpenSSL to use the IBMCA engine
【代码】Configuring OpenSSL to use the IBMCA engine。
2024-01-03 19:23:48 24
转载 Cryptographic Hardware Accelerators
[OpenWrt Wiki] Cryptographic Hardware AcceleratorsA Cryptographic Hardware Accelerator can beintegrated into the soc as a separate processor, as special purpose CPU (aka Core).integrated in a Coprocessor on the circuit boardcontained on a Chip on an extens
2024-01-03 19:19:00 62
原创 OpenSSL provider
如果尚未加载其他提供者,当我们首次尝试从提供者获取算法时,它将被自动加载。请注意,一旦您显式地将提供者加载到库上下文中,默认提供者将不再自动加载。如果未加载默认提供者,则应始终加载该提供者(特别是如果您使用 FIPS 提供者)。传统提供者是一组传统算法的集合,这些算法要么已不再普遍使用,要么被认为是不安全的,并且强烈建议不要使用。FIPS 提供者包含了默认提供者中可用的一部分算法实现,这些算法符合 FIPS 标准。在某些情况下,与默认提供者中等价算法相比,该提供者中的算法实现可能存在细微的行为差异。
2024-01-01 21:45:21 1356
原创 OpenSSL engine
ENGINE API在OpenSSL 0.9.6版本中作为一种底层接口被引入,用于添加加密原语的替代实现,特别是用于集成硬件加密设备。ENGINE接口存在一些限制,并已被PROVIDER API所取代,在OpenSSL version 3.0中已被弃用。以下文档被保存,以帮助需要维护或支持现有ENGINE实现的用户。应通过提供者(providers)来添加对新硬件设备或新算法的支持,并尽快将现有引擎转换为提供者(providers)。
2024-01-01 21:33:04 1044
翻译 OpenSSL 战略架构
该文件概述了OpenSSL的战略架构。从3.0.0版本开始,将需要多个发布版本来将当前的“现状”(1.1.1)架构迁移到未来的“目标”架构。未来的架构预计会有大量变化。我们将提供处理最终过渡的迁移路径。OpenSSL 3.0.0版本对绝大多数现有应用程序的影响将很小,几乎所有良好的应用程序只需要重新编译即可。随着时间的推移,当前通过引擎(engine) 接口提供的功能将替换为通过 provider 提供的接口。OpenSSL 3.0.0 将继续支持引擎(engine)。
2024-01-01 21:29:15 87
翻译 Crypto API - 9.1 编程接口-块密码算法定义
这些数据结构定义了模块化加密算法实现,通过 crypto_register_alg() 和 crypto_unregister_alg() 进行管理。cia_setkey。
2023-12-28 22:28:59 63
翻译 Crypto API - 7. 用户空间接口
调用 bind 系统调用时,将选择用于密码操作的消息摘要类型。bind 要求调用方提供填充的结构 sockaddr 数据结构。salg_type 值 “hash” 适用于消息摘要和有密钥消息摘要。然而,有密钥消息摘要是通过适当的 salg_name 引用的。请参阅下面的 setsockopt 接口,了解如何为有密钥消息摘要设置密钥。使用 send() 系统调用,应用程序提供应使用消息摘要处理的数据。
2023-12-28 22:27:51 41
翻译 Crypto API - 6. 开发密码算法
Struct cipher_alg 定义单个分组密码。以下是在内核其他部分操作这些函数时,如何调用这些函数的示意图。注意,.cia_setkey()调用可以发生在这些示意图发生之前或之后,但不能发生在这些示意图发生的过程中。v vv v v v| |Struct skcipher_alg定义了多块密码,或者更一般地说,定义了保持长度的对称密码算法以下是在内核其他部分操作这些函数时,如何调用这些函数的示意图。
2023-12-28 22:27:25 33
翻译 Crypto API - 5. 非对称/公钥加密密钥类型
非对称”(asymmetric)密钥类型被设计为公钥加密中使用的密钥的容器,而不对加密的形式或机制或密钥的形式施加任何特殊限制。为非对称密钥指定一个子类型,该子类型定义与密钥关联的数据类型,并提供描述和销毁密钥的操作。但是,不要求密钥数据实际存储在密钥中。可以定义一个完全在内核中保留密钥和操作的子类型,但也可以提供对加密硬件(例如 TPM)的访问,这些硬件可以用于保留相关密钥并使用该密钥执行操作。在这种情况下,非对称密钥只是与 TPM 驱动程序的接口。还提供了数据解析器的概念。
2023-12-28 22:27:02 60
翻译 Crypto API - 4. 异步传输/转换 API
async_tx API 提供了描述异步批量内存传输/转换链的方法,并支持事务间的依赖关系。它被实现为一个 dmaengine 客户端,可以屏蔽不同硬件卸载(hardware offload )引擎实现的细节。使用该 API 编写的代码可以优化异步操作,并且该 API 将适应可用的卸载资源来适配操作链。
2023-12-27 22:56:20 37
翻译 Crypto API - 2. Scatterlist加密API
Scatterlist Crypto API 将页面向量(scatterlists)作为参数,并直接在页面上工作。在某些情况下(例如 ECB 模式密码),这将允许在不复制的情况下就地加密页面。此设计的最初目标之一是随时支持 IPsec,以便可以将处理应用于分页的 skb,而无需线性化。
2023-12-27 22:55:08 21
Introduction to Java Programming Comprehensive Version Fifth Edition
2012-02-18
Fusion 基础简介
2012-02-02
DirectFB 原码导读
2012-01-31
KernelAnalysis−HOWTO
2012-01-11
第七讲 内核空间和用户空间
2012-01-11
linux 内存寻址
2012-01-11
Linux中的汇编语言
2012-01-09
TN05.ELF.Format.Summary.pdf
2012-01-06
使用wireshark 解析rtp流.7z
2021-09-21
各种函数零点问题的处理
2017-12-10
electric fence
2016-04-05
Embedded Linux System Design and Development Source code
2013-09-05
<<Programming from the Ground Up>> by Jonathan Bartlett
2013-04-03
Memory Mapping and DMA.pdf
2012-05-23
linux frame buffer 学习资料
2012-05-19
nweb: a tiny, safe Web server (static pages only)
2012-04-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人