- 博客(11)
- 资源 (4)
- 收藏
- 关注
原创 Linux 4.6内核对TCP REUSEPORT的优化
繁忙了一整天,下班回家总会有些许轻松,这是肯定的。时间不等人,只要有剩余的时间,就想来点自己喜欢的东西。下班的班车上,用手机那令人遗憾的屏幕目睹了Linux 4.6的一些新特性,让我感兴趣的有两点,第一是关于reuseport的,这也是本文要阐释的,另外一个是关于KCM(Kernel Connection Multiplexor)的,而这个是我本周末计划要写的内容,这些都是回忆,且都是我本身经历过
2016-05-26 21:55:00 26800 1
原创 TCP SYN-Cookie的原理和扩展
SYN-Cookie概述预防半连接攻击,SYN-Cookie是一种有效的机制,它的基本原理非常简单,那就是“完成三次握手前不为任何一个连接分配任何资源”,它是怎么做到的呢?也是非常简单。1.编码信息将一些本应该在本地保存的信息编码到返回给客户端的SYN-ACK的初始化序列号或者时间戳里面。握手尚未完成不分配任何资源(Linux即不分配request结构体)。2.解码信息等到客户端的ACK最终到来的
2016-05-21 08:11:04 19166
原创 TCP核心概念-慢启动,ssthresh,拥塞避免,公平性的真实含义
本文主要阐述TCP拥塞控制中ssthresh的来历以及为什么拥塞避免探测到丢包的时候,ssthresh会被设置为当前窗口的一半。进入证实内容之前,不得不再次吐槽!目前在网上搜的,任何资料上看的,甚至RFC上,都没有讲明白到底什么是ssthresh,它的值有什么讲究,几乎所有的资料都是在说,如果窗口大于ssthresh,那么就执行线性增窗的拥塞避免阶段,否则执行慢启动...这让几乎所有人记住了这个结
2016-05-17 22:02:44 44218 8
原创 TCP进入快速恢复时的窗口下降算法
夜深人静...夜深人静...TCP在发现丢包的时候,会采取一定的措施,至于如何发现丢包不是本文的内容,本文主要描述发现丢包以后TCP采取什么措施。以Linux为例,降窗发生在进入快速恢复的当时(暂时不考虑RTO以及本地拥塞),在降窗之前是一个Disorder的状态,指的是系统发现了异常,比如收到了重复ACK或者说收到一个推进的ACK携带了SACK信息,然而还不至于到重传的地步,比如还没有达到乱序度
2016-05-14 10:59:55 22640 1
原创 TCP拥塞控制ABC(Appropriate Byte Counting)的利弊说
TCP在慢启动阶段,每一个RTT拥塞窗口按指数级增长,TCP在拥塞避免阶段,每一个RTT拥塞窗口线性增加1。这些都是书上讲的,不必太认真,真实的情况要比这个复杂的多! 首先我们看大部分的资料里讲的TCP是怎么实现每RTT增窗的,一切都是扯理论,没什么现实意义! 在慢启动阶段,每收到一个ACK(数据包从发出到收到其ACK,就是一个RTT),窗口增加1,在拥塞避免阶段,每收
2016-05-08 23:43:33 13964 1
原创 关于Linux LOOPBACK网口抓包的一个细节
这个问题其实是我几个月前碰到,只是那时好像还在回忆着什么,心系上海,还没有完全适应这个新环境,加上这个问题也不是什么太深奥的问题,觉得太简单了,就搁置了。今天周末闲来无事就顺便写来来了。加上深圳经常下雨,越来越喜欢了。本文没什么深度,仅为记录,以及阐述一个“看文档学习原理->猜测并自行实现->对比标准实现确认”的方法。问题是这样的:在Linux上如果使用tcpdump去抓取lo口的数据包,你只能抓
2016-05-07 11:27:16 14248
原创 TCP对SACK的处理以及乱序的处理细节
不容易啊,天气热得厉害,终于到了周末却哪里也去不了,昨晚就特意向老婆申请了一段不长不短的周末时间用来总结近期的工作,也实属不易,如果申请没有获得批准,我也只好利用夜晚了,因为我几乎是一个不用怎么睡觉,可吃可不吃的人,只要有水,烧酒,就好了...大早上的,热醒了,看来也用不到我申请的时间了。...此时是早上4点半...RFC2018描述了TCP SACK的规范,主要是规范了SACK的定义以及在使用该
2016-05-07 11:17:08 16399 1
原创 TCP发送端收到ACK后对传输队列的4次扫描
TCP如果收到ACK后,不管是顺序ACK还是重复ACK(可能带有SACK选项),都可能对传输队列进行4次扫描,它们先后顺序分别是:1.第一遍扫面,分别做以下事情:1.1.标记被SACK的数据包1.2.标记哪些已经重传的包可能丢失1.3.更新网络乱序度reordering整个故事如下图所示:如果UNA向前推进了,我们就不多说了,如果没有推进UNA,而且有SACK标记(请注意,FACK并不是一种特殊的
2016-05-04 23:08:54 12145 1
原创 TCP拥塞控制图解(不包括RTO,因为它太简单了) 【勘误1】
熬过了几个夜晚,终于把TCP的拥塞处理的Linux撸了一遍,仓促中也总结了一幅巨大的图,然而今天下午的例会讨论后,我自己说着说着发现还有一些值得商榷的地方,有的是笔误,也有的是一些细节依然没有搞清楚,因此特此勘误,原文我只修改了文字,因为重新贴图代价实在太大,再者,我希望留下一些错误的印记,这样也能看清楚整个发展的历程,希望两篇一起看。虽然在大师级的神看来,这不算什么,但是对于我,这是一个比较浩大
2016-05-03 21:43:10 13522 2
原创 连接一切 or 拆除链接
到底是连接一切呢还是拆掉一些连接?好像二者是对立的。但是,请了解一下电话/电报刚刚风靡的时候,美国是个什么场景,整个城市就是一个大型蜘蛛网!然而当时的人却引以为豪,只有少数人预示到了危机!懂网络的人都知道,连接一切并不是什么好事,环路,风暴...于是就有了spanning tree,就连人工智能领域,有一个规则也约定俗成,那就是剪枝而不是连通!连接一切意味着什么?意味着你会被信息埋没,这些信息就两
2016-05-02 12:18:42 9286 1
原创 悲哀!作为服务器,Top 1却是fib_table_lookup
越是靠海的地方,海鲜越贵!但那是骗外地的以种田为生的人的...作为服务器,你敢想象系统的开销大部分都在“路由查找”上吗? 如果你的系统中10w+条量级以上的路由表项的话,这个无可厚非,然而系统就是一个服务器,一共两块网卡,连接在一个可怜的万兆以太网中,该以太网一共两个出口,一个默认网关,一个内网网关,我勒个去,一共就2条路由...爆炸! 然而该服务器的pps/t
2016-05-01 09:16:17 12656 2
一个iptables的stateless NAT模块实现
2014-12-27
模块化的nf-HiPAC
2014-11-21
关于linux内核以及其他个人体会的文集
2009-09-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人