随笔分类 - linux tcp/ip
摘要:之前在做waf并发压力测试的时候,遇到一个问题,仪器测试正常,但是真实环境测试超时丢包的验证的时候,并发cps都很低。 查看cat /proc/net/netstat发现OfoPruned 对应值很大,看内核代码才发现,内存不够或rmem超过sk_rcvbuf,就会私房ofo队列,还是全部释放。当时
阅读全文
摘要:1、当 TCP 在存在丢包率为 1% 到 10% 的环境中运行时,可能会交换许多 SACK 块。在发送方繁忙时,如果这些 SACK 块必须排队进入套接字积压队列,我们可以丢弃它们。 主要原因是 RACK/SACK 处理性能不佳,我们可以尝试避免这些宝贵信息的丢弃,这些信息的丢失会导致错误的超时和重传
阅读全文
摘要:今天看tcp ip kernel的时候发现了一个ICSK_ACK_NOW 标志为,分析一下缘由 每次调用 tcp_enter_quickack_mode 时,都会重置与交互会话相关的状态,这会影响对实际交互会话的跟踪和检测。 In several cases in the TCP code we w
阅读全文
摘要:在测试radius 性能时,想到一个问题,以前tcp报文在ip层处理时,涉及到路由查找, 对于tcp协议报文;skb中没有路由缓存,没有关联的sock;且非分片报文;ip_early_demux设置为true;则调用early_demux函数提前在IP层做established状态的sock查找,并
阅读全文
摘要:转载自:https://perthcharles.github.io/2015/10/31/wiki-network-tcp-early-retrans/ Early Retransmit(ER)机制的提出主要解决的是在某些特定场景下,没有足够的dupack触发fast retransmit造成的问
阅读全文
摘要:利用 ebpf sockmap/redirection 提升 socket 性能(2020) 转自:https://arthurchiao.art/blog/socket-acceleration-with-ebpf-zh/ 译者序 本文翻译自 2020 年的一篇英文博客 How to use eB
阅读全文
摘要:从系统cache中查看 tcp_metrics itemip tcp_metrics show tcp_metrics会记录下之前已关闭TCP连接的状态,包括发送端CWND和ssthresh,如果之前网络有一段时间比较差或者丢包比较严重,就会导致TCP的ssthresh降低到一个很低的值,这个值在连
阅读全文
摘要:参考:https://lwn.net/Articles/731133/ 参考:https://www.cnblogs.com/codestack/p/13947183.html 参考:https://www.cnblogs.com/codestack/p/12723229.html BPF_PROG
阅读全文
摘要:TCP Fast Open定义 TCP Fast Open(TFO)是用来加速连续TCP连接的数据交互的TCP协议扩展,原理如下:在TCP三次握手的过程中,当用户首次访问Server时,发送SYN包,Server根据用户IP生成Cookie(已加密),并与SYN-ACK一同发回Client;当Cli
阅读全文
摘要:TCP发送端不能够清除SACK序号块确认的数据,因为接收端很可能由于内存压力等原因,删除乱序队列中SACK确认过的报文。 发送端重传队列中的报文只有在接收到ACK报文的Acknowledge序号字段确认之后,才能移除队列和释放。 接收端丢弃OFO报文 如下在检测的已用接收缓存大于套接口总的接收缓存s
阅读全文
摘要:回看: rack分析 tcp拥塞控制一 主要看RTO超时、SACK、RACK等情况下的报文丢失判断 此次看的内核版本是linux-5.10 RTO超时标记丢失报文 在RTO超时处理中,tp_sk进入TCP_CA_Loss状态,由函数tcp_timeout_mark_lost标记套接口丢失报文。 /*
阅读全文
摘要:rfc文档 Taming the elephants: New TCP slow start 标准的慢启动在长肥管道--带宽延迟乘积(BDP)较大网络环境下表现不好,不好的原因主要有两个: 1) 标准慢启动的拥塞窗口指数式的增长方式过于激进容易导致大量丢包,丢包恢复性能损耗太大。 2) 被优化过的慢
阅读全文
摘要:BIC是binary increase congestion contrl的缩写。不同拥塞控制算法的核心差异其实都体现在拥塞避免阶段。过去reno拥塞控制算法的主要缺点是增cwnd采用的方式是累加的线性增窗(AI,additive increase)。线性增窗主要缺点是: 每经过一个RTO,cwnd
阅读全文
摘要:转载:https://github.com/leandromoreira/linux-network-performance-parameters Introduction Linux network queues overview Fitting the sysctl variables into
阅读全文
摘要:转载自https://www.kawabangga.com/posts/5217 途中,每根竖线的高度可以理解为一次性发送的数据多少:第一个请求中(图中第一次升高),一开始慢慢发,越发越快,这是因为 TCP 要避免出现拥塞,所以在链接刚建立的时候会 slow start,慢慢发送,如果网络能接受,就
阅读全文
摘要:TCP Tail Loss Probe(TLP) Early Retransmit机制解决了dupack较少,无法触发快速重传的问题。但是如果发生了尾丢包,由于尾包后面没有更多的数据包,也就没有办法触发任何的dupack。为解决这种尾丢包的问题,Google的几位大神提出了TLP算法。通过TLP算法
阅读全文
摘要:UDP 在多网卡的情况下,可能会发生服务器端回复报文源地址不对的情况。目前这种情况在portal 对接ac的时候经常出现 所以问题就是:需要保存本次udp 请求的local ip remote ip IP_PKTINFO 这个选项就是让内核在 socket 中保存 IP 报文的信息,当然也包括了报文
阅读全文
摘要:发送窗口、接收窗口和拥塞窗口 滑动窗口机制中涉及三个重要概念: 发送窗口 发送窗口是发送端在操作系统内开辟的一块缓冲区,用来存放当前需要发送的数据,也称为发送缓存。发送端使用发送窗口进行流量控制。 接收窗口(RWND,Receiver Window) 接收窗口是接收端在操作系统内开辟的一块缓冲区,设
阅读全文