随笔分类 -  linux tcp/ip

上一页 1 2 3 4 5 6 7 8 ··· 10 下一页
摘要:tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb, const struct tcphdr *th) { /* * Now real TIME-WAIT state. * * RFC 1122: 阅读全文
posted @ 2022-09-19 16:40 codestacklinuxer 阅读(47) 评论(0) 推荐(0)
摘要:今天打流测试出现大量的FIN_WAIT1状态,可知主动关闭没有收到ack, 有个问题是?这个状态会维持多长时间?? 参考这几篇博客: 修改重传次数&& 超时重传最大时间 TCP的定时器 查看tcp_write_timeout 中部分的代码有检测sock_dead状态下的超时时间 if (sock_f 阅读全文
posted @ 2022-08-26 16:58 codestacklinuxer 阅读(172) 评论(0) 推荐(0)
摘要:之前分析“close系统调用分析-性能优化” 时 出现了一个sockfs 网络文件的问题,当时是linux 2.6内核,目前看下新kernel; 一、简介 Linux中"万物皆文件",socket在Linux中对应的文件系统叫Sockfs,每创建一个socket,就在sockfs中创建了一个特殊的文 阅读全文
posted @ 2022-08-09 10:29 codestacklinuxer 阅读(47) 评论(0) 推荐(0)
摘要:tcp_sock 结构体 见此篇文章 struct tcp_sock {//在 inet_connection_sock 基础上增加了 滑动窗口 拥塞控制算法等tcp 专有 属性 /* inet_connection_sock has to be the first member of tcp_so 阅读全文
posted @ 2022-04-25 19:03 codestacklinuxer 阅读(150) 评论(0) 推荐(0)
摘要:输出pkt时分片出现位置 在发送数据时,如果数据块大于MTU 那么就会分片;ip_finish_output 中就会调用ip_fragment 进行分片 static int ip_finish_output(struct net *net, struct sock *sk, struct sk_b 阅读全文
posted @ 2022-04-23 20:16 codestacklinuxer 阅读(237) 评论(0) 推荐(0)
摘要:skb_add_data skb_add_data()将指定用户空间的数据添加到SKB的数据缓存区的尾部,操作过程如图3-22所示。如果成功则返回0,否则返回相应的错误码。参数skb为待添加数据的SKB;from为待添加的数据源,指向在用户空间的存储缓存区;copy为待添加数据的长度。 skb_tr 阅读全文
posted @ 2022-04-23 17:44 codestacklinuxer 阅读(314) 评论(0) 推荐(0)
摘要:skb_linearize:分配新的skb->data,将旧的skb->data、skb_shinfo(skb)->frags、skb_shinfo(skb)->frag_list中的内容拷贝到新skb->data的连续内存空间中,释放frags或frag_list //其中frags用于支持分散聚 阅读全文
posted @ 2022-04-23 15:51 codestacklinuxer 阅读(538) 评论(0) 推荐(0)
摘要:以前有过一篇TSO-GSO文章;目前再来回顾一下: TSO与GSO的重要区别1, TSO只有第一个分片有TCP头和IP头,接着的分段只有IP头。硬件tso由ixgbe_tso(ixgbe网卡)等函数来处理tso ,然后在请求DMA,写寄存器,通知网卡发送数据。2, GSO在分段时会调用TCP或UDP 阅读全文
posted @ 2022-04-22 17:11 codestacklinuxer 阅读(461) 评论(0) 推荐(0)
摘要:1.1 tcp_sendmsg 使用 TCP 发送数据的大部分工作都是在tcp_sendmsg函数中实现的。 int tcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t size) { struct tcp_sock *tp = tcp_s 阅读全文
posted @ 2022-04-21 23:46 codestacklinuxer 阅读(253) 评论(0) 推荐(0)
摘要:rps的全称是Receive Package Steering,rfs的全称是Receive Flow Steering,rps和rfs是google的工程师提供的两个补丁,用以在软件层面实现报文在多个cpu之间的负载均衡以及提高报文处理的缓存命中率。rps和rfs出现的原因主要有以下两个: 1、 阅读全文
posted @ 2022-04-20 18:32 codestacklinuxer 阅读(498) 评论(0) 推荐(0)
摘要:关键数据 per-cpu及无锁化 内核性能问题的一大原因就是资源共享和锁。所以,被频繁访问的关键数据需要尽可能的实现无锁化,其中一个方法是将数据做到 per-cpu 化,每个 CPU 只处理自己本地的数据,不需要访问其他 CPU 的数据,这样就可以避免加锁。就 DPVS 而言,连接表,邻居表,路由表 阅读全文
posted @ 2021-12-27 23:24 codestacklinuxer 阅读(107) 评论(0) 推荐(0)
摘要:由于UDP的无连接性,在实际client发送数据前,server是不知道四元组信息的,并且也不知道UDP通信的模式;对于类似QUIC这种 长连接 的流式数据传输而言,UDP只是承载数据的一个协议而已,以前udp主要是用于多播,目前使用UDP实现单播传输怎么处理? 当然也就可以专门创建一个socket 阅读全文
posted @ 2021-11-24 23:39 codestacklinuxer 阅读(133) 评论(0) 推荐(0)
摘要:这篇文章 netfilter: implement netfilter SYN proxy介绍了syn proxy SYNPROXY是一个TCP握手代理,该代理截获TCP连接建立的请求,原生支持是从Linux内核3.13开始的。当一个TCP请求从客户端发出时,首先与该握手代理进行三次握手,其采用SY 阅读全文
posted @ 2021-11-23 23:27 codestacklinuxer 阅读(266) 评论(0) 推荐(0)
摘要:haproxy透传用户ip-方法和原理 参考URL: https://blog.csdn.net/frockee/article/details/78641188 为了透传用户ip到后端server, proxy机器需要解决两个问题: 1.在创建到后端server的套接字时, 将用户ip作为套接字的 阅读全文
posted @ 2021-11-22 19:48 codestacklinuxer 阅读(634) 评论(0) 推荐(0)
摘要:rfcx下载地址 :https://www.ietf.org/rfc/ RFC793 : Transmission Control Protocol 该 RFC 正是定义了 TCP 协议的那份 RFC。在该 RFC 中,可以查到 TCP 的很多 细节 RFC1323 : TCP Extensions 阅读全文
posted @ 2021-11-20 17:32 codestacklinuxer 阅读(260) 评论(0) 推荐(0)
摘要:FACK 重传 FACK全称Forward Acknowledgment 算法,论文地址在这里(PDF)Forward Acknowledgement: Refining TCP Congestion Control SACK是使用了TCP扩展字段Ack了有哪些数据收到,哪些数据没有收到,他比Fas 阅读全文
posted @ 2021-11-20 17:28 codestacklinuxer 阅读(472) 评论(0) 推荐(0)
摘要:struct tcp_sock {//在 inet_connection_sock 基础上增加了 滑动窗口 拥塞控制算法等tcp 专有 属性 /* inet_connection_sock has to be the first member of tcp_sock */ struct inet_c 阅读全文
posted @ 2021-11-20 00:15 codestacklinuxer 阅读(314) 评论(0) 推荐(0)
摘要:转载来自:https://www.cnblogs.com/lshs/p/6113061.html 阅读全文
posted @ 2021-11-19 19:17 codestacklinuxer 阅读(62) 评论(0) 推荐(0)
摘要:一、RACK概述 RACK(Recent ACKnowledgment)是一种新的基于时间的丢包探测算法,RACK的目的是取代传统的基于dupthresh门限的各种快速重传及其变种。前面介绍的各种基于dup ACK的快速重传算法及其变种通过修改dupthresh门限等手段,有些可以迅速的探测到丢包, 阅读全文
posted @ 2021-11-19 19:06 codestacklinuxer 阅读(671) 评论(0) 推荐(1)
摘要:查看之前的blog:浅析sack dsack检测 根据RFC 2883,DSACK的处理流程如下: 1)look at the first SACK block : —If the first SACK block is covered by the Cumulative Acknowledgeme 阅读全文
posted @ 2021-11-19 19:01 codestacklinuxer 阅读(274) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 ··· 10 下一页