
网络数据处理
文章平均质量分 91
dillanzhou
这个作者很懒,什么都没留下…
展开
-
linux内核ip_forward参数详解
linux服务器经常被用来提供防火墙、路由器、NAT等功能,在这些场景下,linux内核需要将网卡上收到的报文转发给其他网络设备。linux内核提供了ip_forward参数用于开关内核的报文转发功能,只有这个开关被打开时,内核才会执行报文的转发。网上能找到不少文章介绍ip_forward参数的基本用途和配置方式,但没有什么文章具体介绍这个参数配置后具体会对内核的网络行为产生哪些影响,以及在内核中是如何实现的。而这些问题的答案对转发功能的使用方式会产生很大的影响。原创 2022-10-20 00:26:26 · 10595 阅读 · 1 评论 -
netfilter&iptables探讨(3)——iptables的功能与实现
介绍iptables的基本概念、功能和用法。包括链、表的概念和原理,规则的匹配模式、处理动作和管理命令。原创 2022-08-26 00:13:42 · 723 阅读 · 0 评论 -
netfilter&iptables探讨(2)——netfilter原理与实现
在上一篇文章《netfilter&iptables探讨(1)——基本原理》中,我们分析了netfilter和iptables机制的基本原理以及相关的模块和接口。本文将进一步探讨这套机制的基石——netfilter的原理和实现。原创 2022-08-09 01:03:09 · 1287 阅读 · 0 评论 -
netfilter&iptables探讨(1)——基本原理
在Linux内核中,netfilter和iptables就提供了这样一套内核网络定制机制。本文将简单介绍netfilter和iptables的原理、用途以及两者的关系,从而说明这套机制是如何实现通过用户态的简单配置,就能修改linux内核网络行为的。对netfilter和iptables的具体实现和用法将在后续的文章中讨论。......原创 2022-08-07 22:31:10 · 695 阅读 · 0 评论 -
Linux系统下网络数据包的处理流程
本文主要探讨linux环境下,数据包从网卡接收到协议栈处理的处理流程和对应的代码逻辑。分析的内核代码版本为4.17.6,涉及到的网卡硬件功能特性和逻辑均以intel的82599以太网控制器为例,驱动为ixgbe。本文仅讨论physical function的驱动代码逻辑。数据包从网卡接收开始,其总体处理流程如下: 网卡接收光/电信号,将其转换为数据帧内容,如果帧符合以太网地址等......原创 2018-07-23 10:19:45 · 3816 阅读 · 3 评论 -
DPDK原理分析——Hash库(librte_hash)
Hash表和算法是高性能流量处理中常用技术,在DPDK中也提供了相应的高性能实现用于支持流表、转发规则表等设施的开发。DPDK18的Hash库实现方式与其早期版本(1.6)时期的实现有了根本性的差异,本文介绍的实现基于18.05版本代码。Hash算法原理——Cuckoo HashDPDK中的Hash库采用的hash算法和数据结构基于CuckooHash(https://www.jiansh...原创 2018-08-03 16:30:11 · 7453 阅读 · 0 评论 -
tcpdump与libpcap原理分析
tcpdump是linux上常用的网络报文抓取分析工具,主要功能是抓取系统中的网络报文,根据条件过滤出需要的报文,最后将报文打印或保存到文件中。本文将对tcpdump的实现原理进行分析,由于报文解析展示和保存的逻辑比较直观,本文主要关注报文获取和过滤部分。为了兼容各类平台和不同版本的内核,tcpdump的代码中有大量用于兼容的逻辑和分支,本文只介绍面向最新版本linux平台接口的分支逻辑。...原创 2019-07-30 23:41:27 · 2617 阅读 · 0 评论 -
使用ebpf分析网络报文传输时延
最近需要分析某个链路上的单向网络延迟,数据的发送端使用一个用户态协议栈,而接收端则使用linux内核协议栈。获取延迟的方式是在发送端在发送报文的尾部添加一个发送时间戳,在接收端获取报文后将接收端时间戳与发送时间戳进行对比,从而获得中间的延迟时间。由于发送端和接收端位于同一设备(使用不同的网卡),又分别处于用户态和内核态,因此使用了两端都能高性能访问的tsc时钟作为时间戳来源。为了在接收端尽可能...原创 2019-08-31 23:13:06 · 2814 阅读 · 1 评论