Recent Posts
-
2019-07-16
TCP Fast Open(TFO)
TCP Fast Open 的来源网络的速度与两个因素相关:传输时延(transmission delay)和传播时延(propagation delay)。transmission是指将报文灌入网络电缆的时间,这是与带宽连接有关系的概念,比如千兆网络(网卡)比百兆网络(网卡)的transmission delay更小;而propagation delay是指电信号在网络端到端的时延,它的大小只与端到端的距离有关(电信号以光速传播),TCP 中的往返时间Round Trip Time也就是...
-
2019-06-19
TAILQ之一二事
TAILQ队列是FreeBSD内核中的一种队列数据结构,在一些著名的开源库中(如DPDK,libevent)有广泛的应用。TAILQ队列的定义TAILQ队列有HEAD和ENTRY两种基本的数据结构#define TAILQ_HEAD(name, type) \struct name { \ struct type *tqh_first; /* first element */ \ struct type **tqh_last; /* addr of last...
-
2019-06-17
深入理解同步机制---内核自旋锁
进程(线程)间的同步机制是面试时的常见问题,所以准备用一个系列来好好整理下用户态与内核态的各种同步机制。本文就以内核空间的一种基础同步机制—自旋锁开始好了自旋锁是什么自旋锁就是一个二状态的原子(atomic)变量: unlocked locked当任务A希望访问被自旋锁保护的临界区(Critical Section),它首先需要这个自旋锁当前处于unlocked状态,然后它会去尝试获取(acquire)这个自旋锁(将这个变量状态修改为locked),如果在这之后有另一个任务B同样希...
-
2019-06-13
Netfilter 是如何工作的(六):连接跟踪信息的入口创建(in)和出口确认(confirm)
在 Netfilter 是如何工作的(五) 中连接跟踪信息使用的创建-确认机制的 Netfilter在报文进入系统的入口处,将连接跟踪信息记录在报文上,在出口进行confirm.确认后的连接信息本文以一个本机上送过程中的TCP/IPv4的SYN握手报文为例,详细分析连接跟踪机制的工作流程。入口 & 出口由于是本机上送流程,因此SYN报文的入口是 PRE_ROUTING,而出口则是 LOCAL_IN。Netfilter 在初始化时,会在这两个 HOOK 点注册连接跟踪相关的处理函数...
-
2019-06-12
Netfilter 是如何工作的(五):初识连接跟踪(connection track)
报文过滤和连接跟踪可以说是Netfilter提供的两大基本功能。前者被大多数人熟知,因为我们对防火墙的第一印象就是可以阻止有害的报文伤害计算机;而后者就没这么有名了,很多人甚至不知道Netfilter有这项功能。Why 使用连接跟踪顾名思义,连接跟踪是保存连接状态的一种机制。为什么要保存连接状态呢? 举个例子,当你通过浏览器访问一个网站(连接网站的80端口)时,预期会收到服务器发送的源端口为80的报文回应,防火墙自然应该放行这些回应报文。那是不是所有源端口为80端口的报文都应该放行呢?...