随笔分类 - linux tcp/ip
摘要:目前在处理盒子产品时,发现wan口和lan口收发报文时还在走内核路由逻辑,因为从wan口进来的包如果转发只能从lan口转发出去,所以此时路由查找是个多余动作!!此处应该是一个可以优化点,来试一试吧!!mark,也不想不通为啥一个产品这么多年都没有人去思考这些!!! 工作中还是要多想一想为什么?不要随
阅读全文
摘要:这段时间 tcp 本地lo 接口进程间通信 总是出现 tcp 三次握手 失败!! 同时前段时间驱动以及Tcp/ip 协议栈出现问题 那怎样调试呢?目前 一般都是ftrace kprobe 在使用kprobe 过程中发现,kprobe 是对每条指令都可以hook,如果hook 每个函数的时候, 想知道
阅读全文
摘要:由于:linux 新内核tcp/ip协议栈中添加了 TCP_NEW_SYN_RECV; 所以 在判断sk是否为transparent 时 需要考虑其状态; static bool tproxy_sk_is_transparent(struct sock *sk) { switch (sk->sk_s
阅读全文
摘要:问题: IPv6 cps一旦超过100cps,tproxy 代理失效!问题有点严重!! 先来看代码吧!!貌似也看不了多少, 还有10分钟就放假了 马上就是 春节14.5天的假期了 继续看看!!! 对于驱动接口分析如下: 驱动收包进入hook;hook处理分析进入协议栈, ipv6_rcv >tcpv
阅读全文
摘要:问题如下: 目前能想到的工具有: netstat -antp lsof -i:port sar -n SOCK 查看tcp创建的连接数 tcpdump 由于是 本地回环接口上出现这个情况,认为排除网络抖动情况,ping lo 接口 网络延时稳定; ifconfig 接口没有丢包; 查看 somaxc
阅读全文
摘要:收集整理质料如下: 1:网卡硬件-->2 内核缓存队列-->3协议层 >4用户recv使用的buff 转载:https://zhuanlan.zhihu.com/p/52397230 net.core.optmem_max = 20480 net.core.rmem_default = 229376
阅读全文
摘要:alloc_skb:分配一个数据长度为size的network buffer {skb+data_buffer} 1 /** 2 * __alloc_skb - allocate a network buffer 3 * @size: size to allocate 4 * @gfp_mask:
阅读全文
摘要:今天打算在医院陪父母看病度过一天,还好目前病情算是稳定!!辛劳一生,到头来累出一身病,也许这是中国大多数农民的归宿!!!!! 珍惜和父母呆在一起的日子!听听父亲话说当年修路修桥的峥嵘岁月!顺便也写写blog 1、网卡发生中断,网卡中断服务函数执行收包动作,以igb驱动为例。 一般都会调用igb_cl
阅读全文
摘要:刚离开时,总想着四海为家,仗剑行走天涯!一副数风流人物还看今朝! 惊涛拍浪时,偶而有个电话,却又烦唠叨而言它!殊不知以后也没多少时间听父母叨叨了!!! 不哆嗦了!!今天查bug 又涉及到了skb_clone 以及skb_copy ;那就来看看吧!顺便做做笔记,免得总是忘了,好记性不如乱博客 对skb
阅读全文
摘要:问题:目前设备进行1g吞吐测试时,时不时出现tx流量最大700M 首先查看dev 收发包: sar -n DEV 同时 cat /proc/net/dev 可以看出实际上没有出现丢包(eth7 eth8) 接收数据包的流程 网卡收到数据包。 将数据包从网卡硬件缓存转移到服务器内存中。 通知内核处理。
阅读全文
摘要:之前有一篇文章说到了RTT RTT__RTO TCP使用一个重传定时器来在缺少数据接收端反馈的情况下保证数据到达,这个定时器时间被称为RTO(retrnasmission timeout) 从这个报文中可以看到:服务端的报文没有被确认导致发生超时重传 那要怎么处理这个问题呢? RTO基本算法:htt
阅读全文
摘要:client-- proxy server; 四次挥手走完, client 发出syn ,proxy 代理发出syn后,收到 server的ack后就发出了rst。 分析报文特征如下:proxy的syn的seq ()大于 server回复ack的seq? 为什么会出现这样的问题呢? 说到这个问题,就
阅读全文
摘要:在如下网络层面下,代理(比如Envoy nginx )执行额外的L7策略(Health checks, service discovery, load balancing, mutual TLS),其开销比较大,主要体现在传统的TCP/IP协议栈路径比较冗余,导致其开销比较大;就像同一主机上unix
阅读全文
摘要:今天调试bug时, 忘了将原始的check_sum值reset,导致发包-抓包后发现。check-sum 错误。 来看一看check-sum:简单讲就是对要计算的数据,以16bit为单元进行累加,然后取反 在内核中构造数据包的时候,我们需要关注三个校验和:分别是sk_buf中的csum,ip_sum
阅读全文
摘要:根据perf 工具可以看到目前引擎问题主要是: 内核协议栈以及软中断问题;细分的话 就是 自旋锁、cache-misses、cs 进程上下文切换 1、应用层目前预计只能从数据结构优化; 比如使用haproxy的ebtree经行优化。但是 我们使用了fdtable ,所以无用。ebtree(见http
阅读全文
摘要:在餐馆吃饭时,连接无线网络后访问某网页会自动弹出一个认证页面,我想大家都经历过。。。。。 其网络拓扑如下: sta 网络设备 公网 比如sta 终端ip 是100.100.100.100 访问百度,但是按道理应该返回百度啊?那怎么返回的是 认真页面呢?这里面涉及到报文拦截 。 当sta 的报文经过网
阅读全文
摘要:查一个问题:结果看了一下软中断以及系统 所耗cpu,心中满是伤痕啊 perf 结果一眼可以看到:主要是锁 那么这个lock 是用来干什么的呢?? A:TCP socket的使用者有两种:进程(线程)和软中断。同一时间可能会有两个进程(线程),或位于不同CPU的两个软中断,或进程(线程)与软中断访问同
阅读全文
摘要:https://cloud.tencent.com/developer/article/1150971 前言 说到TCP协议,相信大家都比较熟悉了,对于TCP协议总能说个一二三来,但是TCP协议又是一个非常复杂的协议,其中有不少细节点让人头疼点。本文就是来说说这些头疼点的,浅谈一些TCP的疑难杂症。
阅读全文
摘要:skb_shinfo(head)->frag_list skb_shinfo(head)->frags[]能区分开来吗???结论就是: frags[] are for scatter-gather i/o buffers --nr_frags 和 frags 用于支持 Scatter/Gather
阅读全文
摘要:网络设备一次能够传输的最大数据量就是MTU,即IP传递给网络设备的每一个数据包不能超过MTU个字节,IP层的分段和重组功能就是为了适配网络设备的MTU而存在的。从理论上来讲,TCP可以不关心MTU的限定,只需要按照自己的意愿随意的将数据包丢给IP,是否需要分段可以由IP透明的处理,但是由于TCP是可
阅读全文