自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

redwingz的博客

Linux内核网络、虚拟化

原创 SACK压缩

变量tcp_comp_sack_nr定义在接收到连续的乱序报文时,可压缩的最大SACK回复报文数量,即低于tcp_comp_sack_nr值时,延时回复对端ACK报文。但是,前TCP_FASTRETRANS_THRESH(3)数量的乱序报文,要立即回复ACK报文,以帮助对端完成快速重传。 Comp...

2020-03-31 21:29:31 283 0

原创 Forward-RTO超时确认

虚假的重传超时将导致TCP性能的降低,因为这将发送不必要的重传报文。Forward-RTO是一种用于检测虚假重传超时的一种算法,F-RTO仅针对发送端,其不需要任何TCP选项的支持。在超时重传第一个未确认的报文之后,TCP发送端的F-RTO检测回来的ACK报文,来确定此次超时是否是虚假的。进而,决...

2020-03-29 21:53:21 140 0

原创 Tail Loss Probe实现

Tail loss probe (TLP)利用RACK减少RTO的发生,TLP触发快速恢复以修复末端丢包,否则只能由之后的RTO来修复。在原始报文发送之后,TLP将在1到2倍的RTT时间内发送探测数据报文,探测报文可以是新的、之前非发送过的报文,或者重传SND.NXT序号之前已经发送过的报文。探测...

2020-03-28 22:37:00 289 0

原创 PAWS检查

PAWS(Protection Against Wrapped Sequences)功能基于TCP的Timestamps选项实现,用于拒绝接收到的过期的重复报文。PAWS假设每个报文都携带有TSopt选项数据,其中的时间戳TSval保持单调递增,所有,当接收到一个报文其TSval值小于之前在此连接...

2020-03-22 07:34:50 385 0

原创 TCP之timestamps选项

默认情况下内核是开启timestamps选项的,如下tcp_sk_init函数中对sysctl_tcp_timestamps的初始化。 static int __net_init tcp_sk_init(struct net *net) { net->ipv4.sysctl_tcp_...

2020-03-20 22:53:52 1012 0

原创 TCP窗口扩张系数选项WSCALE

如下图所示,TCP窗口扩张系数选项长度为3个字节,在TCP握手阶段的SYN报文和SYN+ACK报文中携带,其旨在通告对发送和接收窗口扩张功能的支持,以及通告扩张系数。注意前者意味着只有在SYN报文中通告了对WSopt选项的支持时,回复的SYN+ACK报文才可携带WSopt选项,否则,SYN+ACK...

2020-03-15 21:07:20 663 0

原创 TCP初始拥塞窗口与初始接收窗口

根据RFC3390(2002年)中的表述,TCP初始窗口的上限定义为: min (4 * MSS, max (2*MSS, 4380 bytes)),旨在限制初始窗口在4K范围内,但是当MSS非常大时,会超过4K限制。 If (MSS <= 1095 bytes) ...

2020-03-13 22:35:42 1007 0

原创 内核TCP的SYNCOOKIES

如下PROC文件tcp_syncookies默认值为1,表明在套接口的SYN backlog队列溢出时,将开启SYNCOOKIES功能,抵御SYN泛洪攻击。如果tcp_syncookies设置为2,将会无条件的开启SYNCOOKIES功能。 $ cat /proc/sys/net/ipv4/tcp...

2020-03-12 21:38:07 371 0

原创 TCP初始序列号

介绍一下对TCP初始序列号(Initial Sequence Numbers)的理解。 TCP客户端ISN TCP客户端首次发起连接,在函数tcp_v4_connect中,调用secure_tcp_seq函数初始化其ISN序号,在稍后一节进行介绍。 int tcp_v4_connect(struc...

2020-03-04 21:30:05 637 0

原创 内核SYNPROXY实现

SYNPROXY配置如下,首先标记需要处理的报文,这里需要两个配置,一是关闭nf_conntrack_tcp_loose,这样无端的TCP报文(非SYN报文)将会被conntrack标记为INVALID状态。二是设置notrack标志,对TCP的SYN报文不继续连接跟踪,其状态为UNTRACKED...

2020-03-03 22:00:56 321 0

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