自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(2158)
  • 资源 (4)
  • 收藏
  • 关注

原创 闲谈IPv6系列文章集锦

本文总结一个目录提纲,只要是给自己看的,记录一下哪些东西已经总结过了。闲谈IPv6-6to4隧道和ISATAP隧道: https://blog.csdn.net/dog250/article/details/88644797闲谈IPv6-说说IPv6地址分配和BGP: https://blog.csdn.net/dog250/article/details/88430415闲谈IPv6...

2019-03-18 22:38:43 42004 34

原创 为什么不要碰自媒体

由是分析,在自媒体早期的蓝海节点,有饱满的潜在增量用户,只要有博主直播一次吃屎,就很容易抓住大量粉丝,并长久维持,但潜在增量用户不见(日活为人口 1/10 数量级就可)后,企图对存量用户直播吃屎,可能只能引发一个突刺,每天吃屎也只能让突刺钝一些,再说如果天天吃屎只有这效果,还不如天天吃自助探店,但众所周知,博眼球的另类吃播喝播因此而患病猝死的已经不少。注意,长期关注和取关效果一样,可如下解释,长期关注说明用户对博主感兴趣,他因此不会再关注其他博主,取关意味着用户不感兴趣,因此对其他类似博主也很难有兴趣。

2024-07-19 19:12:35 2418

原创 拥塞控制耦合系统建模

函数 f 描述了节点的拥塞控制策略,它可以是复杂的非线性函数,表示节点的拥塞状态如何随时间变化。这组微分方程描述了拥塞控制系统中 n 个节点拥塞程度随时间的变化,并且它们是耦合在一起的,因为节点 i 的拥塞状态影响了所有其它结点的拥塞状态,反之亦然。这意味着现实中存在不同的拥塞控制算法混部,事情就会更加复杂,获得它们的部署比例是困难的,但对最优化指标却是充分必要的。通过对微分方程组的解析和数值求解,可以研究系统在不同参数和初始条件下的行为,包括稳定性、收敛性,以及对外部扰动的响应等。

2024-07-19 09:42:40 2486

原创 拥塞控制是一个耦合系统

典型地,对于 vegas,如果 rtt 增加,它很难确定是有其它新 flow 加入还是存量 flow 在增加 inflight,若前者,当前 flow 应 cwnd --,若后者,当前 flow 应增加 minrtt 基准以随行,判断结论不同,行为则相反。当然,这并没有陷入不可知论,节点间的互不可知本身就是拥塞控制系统的一个属性,我的意思是,要多考虑不同算法在不同规模之间的互动影响,而不是算法本身的动力学,这显然对一个算法的实际部署前的论证有益,这也是一个优秀甚至合格的拥塞控制算法所必须的。

2024-07-17 18:18:50 3150

原创 vegas 真不能和 cubic 共存吗

还是大数定律和中心极限定理在起作用,cubic 流数量很大时,根本感知不到 aimd 锯齿,也就感知不到它们侵占 buffer 的行为,换句话说,跟 1 条 or 少数条 cubic 流共存,对 vegas 不利,但大量对大量流场景,统计律将削弱 aimd 锯齿,将 Σcwnd / n 收敛到期望,将 rtt 收敛到均值。但当 vegas 经由的瓶颈链路 n 比较小时,不建议部署 vegas,因为 Σcwnd 方差过大,rtt 波动过大,不好定准 rtt 期望值。理想的意思是有根据,不实际。

2024-07-16 18:50:04 6072 1

原创 端到端拥塞控制的本质(2)

如果 buffer 真的可以无限呢,岂不是拥塞随着 buffer 的增加越发加剧,事实上在摩尔定律作用下,buffer 内存确实越来越便宜,此时就必须依赖 red,因此,red 并不是仅仅针对全局同步,而是应对渐大的 buffer。如果哪天发现了几近免费的内存颗粒,buffer 几乎可以无限扩展,aimd 势必要求 red 变得更加复杂,aimd 依赖一个 “丢包事件”,而这个事件并没有在算法内部闭环,它完全依赖 buffer 的大小以及 aqm 的配置,aimd 并不是可扩展的算法。

2024-07-15 21:08:49 3137

原创 端到端拥塞控制的本质

用微分方程描述拥塞控制非常直观,因为它本身就是描述变化的,而拥塞控制就是要对变化做响应,变化主要指全局流量的波动,有流量加入,就出让一些资源,有流量退出,就抢占一些资源,出让多少,抢占多少,不光看能力,还要看全局,所有这一切都非常容易用微分方程描述。而对于 vegas,只需要盯紧时延变化,下面是我给出的一个模型,简陋,但能说明问题。很多人都有体验,刚挤进一辆满载公交车或绿皮火车,似乎每个人都被压得喘不过气,但车子颠簸一阵子后,奇迹般宽松了,另一例,医院,景区,购物等不管排队多长,似乎最终都会得到服务。

2024-07-12 21:50:49 4470

原创 从微分方程组构建 bbr 模型

关于 bbr probertt,值得说明的是理论上 bbr 并不需要这个状态,因为 probebw 的 probe/drain 周期足以保证 noqueuing,但值得注意的是,bbr 采用 10-round max-filter win 作为 probe 基准,因此必须保证在一个 max-filter win 中至少有一次 probe,而这个 max-filter bw 与真实的 bw 之间的差异便是 buffer 稍微堆积的根源,一切环环相扣,若有偏差则可能使系统偏离稳定点。

2024-07-11 11:24:43 4571

原创 in-flight 要维持在 bdp 附近吗

我一向抱怨 bbr 状态机太稀碎,但它也没大错,虽然 probe 会挤占 buffer,但 probertt 后 Σbw_i == C && queue_len == 0,却也兑现了承诺,但值得注意,probertt 是同步的,众流在同时进入 probebw 后仅维持自己的 bwi,却释放了所有 buffer,除非 N * 4 - bdp > buffer_size,请注意,如果 vegas 的 β 取 3,N 巨大且总 bdp 不太大时,bbr 更易爆 buffer。浙江温州皮鞋湿,下雨进水不会胖。

2024-07-09 15:20:13 4697

原创 基于网络编码的 tcp 变种-tcp/nc

从 3 次 dupack,3 个 sacked segs 到 rack,甚至跌入 rto,逻辑复杂的核心在于,你必须用某种启发式算法判定丢包,然后择机重传标记为 lost 的报文,丢包判断必须尽快,而重传却不得不谨慎,慌乱中很难把握分寸,则要么不足,要么激进。至于冗余度,既然不准备多介绍 tcp/nc 也就不多说,确实,相比传统 tcp,有效传输的数据更少了,但这本身就是 trade off,旨在解除 tcp 的抱怨 “花太多精力在丢包判断和重传中”,就够了。规整化,本身就要付出代价,要看收益有多大。

2024-07-09 10:38:06 4888

原创 交换机需要多大 buffer(续:更一般的原理)

设 X₁,X₂,X₃,…+ Xₙ) / n,根据大数定律,对于任意 ε > 0,有 lim(n→∞) P(|Sₙ - λ/n| ≥ ε) = 0,所以 Sₙ 趋向于固定值 λ/n,n 非常非常大时,叠加效果 nSₙ 就等于 λ,不再波动,当 n 虽非无穷但也非常大时,叠加效果 nSₙ 则围绕在 λ 周围微弱波动,我们将 buffer 作为吸收统计波动的工具,波动越微弱,所需 buffer 就越小。,Xₙ 为来自 λ/n 泊松分布的随机变量,n 趋向 ∞ 时正态分布的期望和方差分别为 λ/n 和 λ。

2024-07-05 11:13:17 5261

原创 交换机需要多大 buffer

中心极限定理说的就是抽样越多钟形越高越细,抽样越多的意思就是 n 越大,随着 n 的增加,Σw 倾向于收敛到非常细高的区域,极端情况,n 无穷大,σS = 0,buffer 则不再需要,无穷条流的锯齿被平滑到 bdp 边缘,刚刚恰好填满 bdp。约 12 年前,我说过一句话,“经理能扣篮,但不经常,也不绝对”,这实在就是量子力学的哥本哈根解释的解释,说经理不能扣篮是不准确的,因为经理扣篮的概率虽小,但不为 0。有点违背直觉,但是真事儿,交换机过境的流越多,所需 buffer 越小,这是为什么?

2024-07-04 17:06:33 5698

原创 bbr 和 cubic 的共存

bbr 流多,虽可从持续减少的 cubic 方 probe 一些带宽,但所有 bbr 的同步 probertt 及自己的 cwnd gain(量多,值就小了,很容易被限制在很小的buffer)会限制甚至反制 in-flight,如果相反,bbr 少,cubic 多就不同,大量异步 aimd 造成统计波动平稳(平方反比律还记得吗),minrtt 不会减少,而 maxbw 在 mi probe 中纯增加,bbr 带宽持续攀爬向上。时间长河中,一切现状都是历史在叠加,这就是卷积,而另一方面,如本文所描述的模型。

2024-07-02 16:48:22 6281

原创 分布式并行最短路径

计算机看它笨拙前面提到,是计算机的时间精度太粗糙,但在本身就更大的时间尺度,这种算法就高尚,类似 rip,stp 都是消息交换驱动的分布式算法,本算法也不例外,它的目标就是一棵最短路径树,天然解决了 rip 的环路问题,很高尚。如果时间精确任意小,sleep(v) 样式的排序算法最快,且完全可扩展,与排序规模无关,这是另一种自然而然的算法,与人类风格的串行 + 统筹方法的风格截然相反,计算机无疑模拟了人的风格。,我喜欢大自然的第一性原理,最小作用量,梯度下降,爆炸,河水泛滥,本质上都是一回事。

2024-06-27 11:32:20 6593

原创 拉普拉斯变换与卷积

将极点看作逆变换后 x(t) 收敛,发散,震荡特征的总结是高尚的,而不是反过来。从 x(t) 的表达式可明确归纳出 a,b,c 等系数和函数收敛,发散,震荡的关系,而 a,b,c 等系数恰恰就是逆变换前 G(s) 分母为 0 的特征方程解的组成,将这些解在复平面的位置称作 “极点”。时域中,信号持续时间和信号生成时间是相对的,必须卷起来运算,而频域是个对称的空间维度,不同频率信号以及针对每个频率信号的处理全都 “摆在那里”,因此可通过精巧阵法一下子算出来(如上图矩阵只是一个说明,本质上还是复数的乘法)。

2024-06-26 11:10:23 7384

原创 卷积的通俗解释

时刻的信号 f(t),f(t - 1),f(t - 2),f(t - 3),…个时间单位,如果 “作用力的变化” 可用 g(t) 来刻画,f(t),f(t - 1),f(t - 2),f(t - 3),…然后将 f(t),f(t - 1),f(t - 2),f(t - 3),…,这样反而不好理解,不过有了我这个解释后也就好理解了,0 时刻的信号 f(0) 作用了 t 时间,以此类推,1,2,3,4 时刻的信号分别持续了 t - 1,t - 2,t - 3,t - 4 时间。最后,为什么叫 “卷” 积?

2024-06-24 19:27:49 9787

原创 反馈时延与端到端拥塞控制

简单通俗来讲,rtt 过大时,当 sender 接收到拥塞信号时,拥塞可能已经解除或已经进入第 n 次完全不同的拥塞状态,亦或相反,拥塞状态已经病入膏肓,信号仍未到达 sender,导致持续注入流量加剧拥塞,崩溃是可能的,虽能恢复,但恢复期受震荡周期影响,而震荡周期一般又与反馈时延正相关。时延会在所有频率上引入一个线性相位滞后,同时,增益曲线也会在高频段出现衰减。没有时延时,系统的稳定性由 df(x,t)/dt 的符号决定,引入时延后,平衡点的稳定性分析变得更为复杂,需要考虑时延对 f(x,t) 的影响。

2024-06-23 10:27:42 7975

原创 用 PID 优化拥塞控制

PS:这本书非常不错,但并非专业计算机范畴的作品,控制论大多数被应用在机械自动化,电子自动化,航空航天,机器人,运筹学等,但拥塞控制肯定也属于控制论范畴,这一点我早就提到过。端到端可靠传输协议作为典型的闭环反馈系统,看起来也能用 PID,以前曾思考过这问题,参见 TCP拥塞控制和PID控制器,然而网络传输并非线性系统,PID 相对不好使,但选对目标误差,让 PID 作用于该目标,而不是整个系统就很高尚。这就是 PID 版本的 inflight 守恒算法,但这是基本版。浙江温州皮鞋湿,下雨进水不会胖。

2024-06-22 18:57:37 7900

原创 求最小生成树的新算法

以上算法只是一个可行性说明,在更普遍场景,这个算法应由多节点并行完成,各节点相互交互转发 [节点,边,权重] 的 list 信息来判断出环路,由最大边所连接节点自行 block 该边。不管 prim 算法还是 kruskal 算法都基于 “当前可见最短边” 作贪心策略,但这并不适合分布式并行操作,比方说所有节点一起构建最小生成树,这些算法都显得同步开销过大,甚至导出错误的结果。反之,“一个环的最小边一定在最小生成树中” 却不正确。基于此,只要找到一个环,砍掉它的最大边,砍掉所有环最大边后,事情就成了。

2024-06-20 19:24:48 11290 1

原创 自由度与反证法

假设 G’ 是客观上存的那棵最小生成树,而 G 是用 kruskal 算法构造的树,如果它们不是同一棵树,至少有一条边属于 G 而不属于 G’,我们假设第一条这样的边就是按照 kruskal 算法加入 G 的当前边 e,言外之意是小于 e 的边如果在 G 中,也一定在 G’ 中,反之亦然,现在将 e 加入 G’,显然会构成一个环,现在用这个环推出一个不可能的事。却根本证明不了这些结论,为什么三条边相等,两个三角形就全等,因为不相等不行啊,它没多余的自由度啊,木工都懂。浙江温州皮鞋湿,下雨进水不会胖。

2024-06-20 17:38:58 7756

原创 最短路径和最小生成树

自然长大的树(非刻意修剪的盆景),动物体内的血管,甚至从集市自然形成的城市道路,帝国扩张,都是最小生成树,个中原因就是自然选择,如果它们不 “最小”,就会有更小的树取而代之。这些都是自然而然的过程,就像我在描述最短路径算法时想表达的一样,最小生成树比最短路径表达的更多,它是个熵减过程,信息交换,环路修剪本身就需要额外的成本,所以它更多描述的是一些生物学或社会学的过程,而不是无机物世界的自然现象。对于最小生成树,它和最短路径同样容易理解,比如自然界中能看到的树,几乎都是最小生成树。至于 STP,会配就行。

2024-06-18 17:55:40 8194

原创 一道全等三角形证明题

以本文展示的问题为例,若要用全等三角形的知识点,就要至少构造两个三角形,而上面那图里 CK = CE 就是颇具哇塞的奇技淫巧,但看下面这图,K 点其实什么也不是,它就是 C 点自然旋转而来的 C’,就一个普通旋转,一下子那些辅助线就全部暴露出来了,我将那些点命名为 C’,B’,看起来就不是奇技淫巧而是旋转操作了。关注量之间的关系,而不是关注如何取巧,仍以本文的题目说明,B,E,C,F 四点共圆,圆心的轨迹从 ABC 的中心移动到 BCG 的中心,这里设 CG = CB。浙江温州皮鞋湿,下雨进水不会胖。

2024-06-17 19:01:03 8356

原创 再谈 dijkstra 算法和最短路径问题

里的图解释得已经很明白了,但这和 dijkstra 算法有什么关系,为什么说是 “基于 dijkstra 算法的新算法”,基不基于不重要,要点在于,dijkstra 算法本身,它就是一个 “只需要一次广度优先遍历” 就获得结果的算法,不同点在于,dijkstra 算法用 S 到 V_curr 的距离来松弛,而我的方法则是用坐标系把每个节点的松弛结果都展示了出来,松弛的过程通过递归调整后继节点纵坐标来完成,而广度优先恰恰意味着后继节点非常少,在绝大多数情况下,好运常在,O(E) 时间复杂度即可完成。

2024-06-14 18:41:27 9011

原创 有向图的负权值边与建模

,为什么工人的建模的熵减过程会出现负权重边,而自然的熵增过程不会出现负权重边,本文解释一二。自然的过程如爆炸,河水泛滥,昆虫无意识漫游等,这些都遵循第一性原理,而人为的过程比如金融投资,成本估算,道路交通网络行为分析等,都需要注入能量,它们不是自然的过程,背后的原理不再是最小作用量,分析求解的方式自然不同。基于此,我们可以规划一个比较久的跑步时间,比如一年,然后在这一年中按固定跑 1 休 0,或跑 1 休 1,或跑 3 休 1,或跑 5 休 2,或在一长段时间随机 x,y,调节参数 a,b,c。

2024-06-13 18:30:30 9309

原创 求单源最短路径的新方法

昨天的文字中提到,dijkstra 算法模拟的是 “自然发生的过程”,背后是第一性原理,负权重边恰恰是 “不可能自然发生的”。以爆炸为例,当冲击波接触到某处,冲击波袭来的路径一定最短,若希望冲击波以某种方式先接触到它处再拐回的速度更快,除非时间倒流,在自然尺度下这不可能发生,再以河水泛滥为例,洪水淹过某地,洪水经过的路径一定最短,若要洪水经过别处再拐回的路径更短,除非水往高处流,在自然重力下,这不可能发生。那为什么 dijkstra 算法和我上述的算法都无法处理负权重边?浙江温州皮鞋湿,下雨进水不会胖。

2024-06-13 18:20:31 9046

原创 dijkstra 算法为什么高效?

floyd 算法的技巧在于如何高效折腾二维邻接矩阵,而 bellman-ford 算法的技巧则在于邻居交互的过程,何时交互,以及交互什么,所以人为过程是个熵减过程,虽然费劲,但也能处理非自然逻辑,比如负权重。对于负权重的理解,如果它仅仅是一个度量,那可以统一加一个比最大负权重小 1 的数字的绝对值,就可以使用 dijkstra 算法,但事情没有这么简单,负权重并非只是一个度量,本文暂不谈,有空专门说下 bellman-ford 这种人为的熵减算法。这个解释有点循环因果了,算法导致了高效,而高效的是算法。

2024-06-12 19:22:51 12808 2

原创 一道初中一年级几何题解析

拿到题后直接解的话就是在 BC 上截取 BP 等于 CE,就直接得出 PBD 和 ECD 全等,加上角 EDF 等于 45 度,就能得到角 EDF 等于角 PDF,于是 PDF 与 EDF 全等,FP 就是 EF,这样一来 EC + EF + CF 就是 BP + PF + FC。这就是一个简单折纸过程衍生出的几何题,它的核心就是轴对称,但出题的人隐含一些非常显然的条件来考察学生们掌握奇技淫巧的能力,这是非常可恶的。解这种题收获最大的就是获得这道题背后的逻辑,而不是奇技淫巧本身。

2024-06-11 18:28:02 9061

原创 一个 buffer 使用的负反馈实例

典型的做法是识别到一系列标志性事件,比如丢包,时延增加等,然后对这些事件做反应,进而形成负反馈,但 inflight 守恒是一种完全不同的做法,它将负反馈平铺到了整个传输过程,并不识别任何特殊事件。设 r(t) 为 buffer 使用情况,q(t) 为网络流量,q 持续占用 buffer,但当 buffer 占用过大时,q 会主动收缩,注意,这里 “当 buffer 占用过大” 就是算法需要识别的事件。其中 R,Q 为常数,alpha,beta,gamma 为参数。浙江温州皮鞋湿,下雨进水不会胖。

2024-06-08 17:59:52 9784

原创 tcp aimd 窗口的推导

方程第一项为 AI,第二项为 MD。这就是结果,尝试获得微分方程的解析解也无妨。旧事重提,今天用微分方程的数值解观测 tcp aimd 窗口值。这就是 tcp aimd 的 cwnd 与丢包率的关系方程。浙江温州皮鞋湿,下雨进水不会胖。

2024-06-08 17:25:47 10257

原创 inflight 守恒和带宽资源守恒的有效性

只要 E_best 共识被识别,流量守恒,资源守恒,不断腾挪(想象一下,早高峰的公交车刚开始非常拥挤,晃荡一阵子后就不拥挤了,但也上不来人了),最终就是效率和公平双百分。x 的变化受两方面影响,它的生成速度与资源成正比,同时其消亡速度与其本身成正比,而资源 y 也受两方面影响,首先,更多的 x 会消耗更多资源,更充足的 y 会使其消耗更快(本性?),其次,如果有 x 退出,y 会增长。像不像安得广厦千万间,大庇天下寒士俱欢颜的奢望,到底是鸡飞蛋打一场空,越是疯狂越是奔赴,最终延迟的报应越猛烈,双归零。

2024-06-07 18:53:27 10282

原创 inflight 守恒拥塞控制的稳定性

其中,c 是自我激励强度参数,b 是自我抑制强度参数,c 是相互抑制强度参数。b,c 共同决定了抑制行为,是 E_best 共识的决定性参数,是为 “适可而止”。inflight 守恒算法并不关注自我激励的细节,它可以是加性增 cwnd,也可以是乘性增 cwnd,甚至可以是指数增 cwnd,因此我将其简化为线性激励,即。同理,在区域 B,C,D,根据 y 的位置和 dx/dt,dy/dt 的符号亦可推出轨迹向 P 收敛,如上图剪头所示。,算法更关注的是自我抑制和互相抑制,这是一类负反馈,用。

2024-06-06 18:23:57 9927

原创 网络简史-基于图论的网络

先看 crossbar,它提到它的缺点,可扩展性属其一,它的交叉点是接入节点平方增长的,但一般对一个端口固定的盒子而言,这倒不是问题,再如 banyan 网络就是用阻塞时间换空间,而空间换时间的方案就是规则树了,要么占地方,要么阻塞。最大流算法虽然也是本着高效为出发点,但它是正向反馈,最大流算法不适合直接用于互联网的实时路由选择,特别在早期网络算力不足时,大规模网络实时收敛要消耗大量资源,大大增加路由实现的复杂性,而我们知道,best effort 首要关注廉价的可用性,而不是奢侈的精益求精。

2024-06-04 18:39:31 10567

原创 互联网简史-分久必合,合久必分

下一跳确定了,这是此前 30 年网络技术的沉淀,但到达下一跳带宽的实时调度和分配技术才刚刚开始,转换一下纵横,重拾(这个词虽比较文雅,但属于程序员看不起的文科生的范畴,不好懂)电话网和分组交换网的历史经验,它们是如何从 full mesh 的困扰想到使用交换机的,目前对带宽的需求就是 full mesh 的,动态调度带宽,需要一个 “电路交换机”,未来,带宽肯定是可以被 ‘浪费’ 的,但要以并行(multipath)的方式。任何当代技术都是古老技术的重组,这是真的。现在的网络还差一件事,即动态分配带宽。

2024-06-01 20:37:56 11855 2

原创 buffer 效益的物理解释与 E_best 共识

用数学式子表示,设 AB = x,则 EF = 2b * x / (x + b),若单看 AB 的单位效益,则是 E(x) = EF / AB = 2b / (x + b),这意味着越贪婪越差,对纯自己的行为而言,单位收益是绝对单调递减的,但若看 AB + BO 的整体效益,则 E(x) = EF / (AB + BO) = 2b * x / (x + b)^2,这是一个有极值的函数,当 x = b 时取最大值,即上图中间的情况,这意味着如果有共享者,跟它一样就是最优的,同样不要试图贪婪。

2024-05-30 18:13:50 9616

原创 拥塞控制的微观行为与力学解释

vegas 稍微沾边儿时就被喷了,几乎所有拥塞控制方案都试图在微观层面控制统计特征,而我揭穿一些事实也不在乎有人白嫖,因为我这些是拥塞控制的核心本质但并不关注单流吞吐,不添堵,我这些和众人的目标并不一致,人们更感兴趣的是把乘法降窗改成减法降窗,把参数调激进,见缝加塞,而这些都是在行业保身立命的根本,可不敢随意给别人看。在力学解释上,一开始出大力压杠杠的收益相对于 b 的固有势能收益而言是非常明显的,一旦出大力开始超过固有势能的做功就反转了,倒着看,固有势能做功每减少一点,其损失的收益将减速减少。

2024-05-29 18:53:39 9816

原创 拥塞控制的自适应 AQM 探索

另一个点,在每一次 dequeue 报文时,按概率删除报文追求的不仅仅是平滑,另一种看起来更简单的方式反而会造成颠簸,误伤良性流量,与上述不在 enqueue 做此逻辑的理由 2 一样。既然不想在 host 将流按照大小分类,嫌没意义,麻烦或看不上,那其实交换机一直在做这件事,比如优先级队列,加权公平队列,加权随机早期检测等,不管是物理交换机还是虚拟交换机,这几样肯定跑不了。codel 是个好东西,fq_codel 更有点意思,自适应携带负反馈环,这个我喜欢。最后,谈谈该 aqm 的算法细节。

2024-05-27 18:01:45 9638

原创 为什么 buffer 越大传输效率越低

看看,是不是所有 reno,cubic,vegas,bbr 的配置部署建议都在里面了。简单解释一下,c 越大,rtt 越大,管道长短视为固有属性,E1 最大值同步增加意味着 c 越大,挤占 buffer 的收益带来的总效能越大,这件事值得做,反之,c 越小,小 rtt 链路挤占 buffer 就是相对出大力而不讨好了。其中,E 为效益,编号 1,2 区分两个模型,公式中均以 y 表示,x 表示一条流的有效带宽,a 为瓶颈链路总带宽,b 为 buffer 已填充大小,c 为单向传播时延。

2024-05-24 18:48:45 12567 9

原创 从边际效益递减看 buffer 中挤占带宽

每投入 1 单位 queue,一开始会挤占出大于 1 单位 bw,随边际效益递减,终于到达一个点,每投入 1 单位 queue,获得正好 1 单位 bw,随后过了该点,每投入 1 单位 queue,将获得小于 1 单位 bw,那么该点就是 E_best,越过该点继续挤占带宽不再划算,这就是数据流会不自觉出让资源的动机,它并没有采取主动的动作出让资源,而是不争了。在边际效益递减的情况下,初始时增加投入会导致产量的迅速增加,但随着投入的增加,额外产量的增长会逐渐减缓,最终可能会停止增长甚至开始减少。

2024-05-22 17:50:59 10643

原创 bbr 的全局同步

注意到胶着的点,probertt 必不可少,可它的时机却不好把控,probebw 全局同步依靠 minrtt 错开 cycle phase 来避免,而 minrtt 的稳定性又不好把控,总之还是那套老话,bbr 的 maxbw,minrtt 不可同时测得,正是它们间不可弥合的 gap 引发了如此多不可控的可能性,再怎么折腾也无济于事。很少有人理解这个,就像跑步中的现象一样,正确的做法是追求 E_best = max(舒适速度 / 时间),而不是去追求配速,单纯追求配速容易跑崩,单纯追求舒适容易跑停。

2024-05-21 18:14:54 9917

原创 在数据中心网络中隔离大象流

这种简单直接的做法非常有效,即使存在将流纳入大象流后它马上就结束了的可能,也不会有任何损失,首先,它已经离开了短流类别,无伤短流,其次它在该类别尚未有所作用力前就结束了,无伤自己和长流,如果它还将继续存活很久,那它将继续上升到更长的流类别中重复这样的事,在它所属某个类别的那段时间,它将和同属于该类别的其它流进入同一个虚通道。如果知道流量的统计分布就好办,但往往没有任何统计分布可以准确拟合数据,为了建模方便,我们假设流量的生存时间符合帕累托分布,问题显然就是给定一条流已经存活的时间 t,求它剩余寿命的期望。

2024-05-20 18:13:29 10347

一个iptables的stateless NAT模块实现

如果你在寻找Linux上配置诸如Cisco设备上的static双向NAT的方法,这个或许就是你想要的; what?你觉得它完不成PAT?是的,它不行。但是想做PAT为何不使用现有的iptables实现呢?它可以自动为你解决元组唯一性问题。不要从概念上分析,事实上,static双向NAT是完全对称的,一对一的 ,也只有在BOX两边的网络在拓扑级别是完全对等的情形下,这种NAT或许才是有用的,Cisco设备经常处在这样的位置,比如一个很大的stub节点的出口位置,比如两个domain的中间位置... 我将名字取为STATIC-2-WAY-NAT,比较长也比较怪,完全不符合UNIX的小写短名传统,我的想法是:这样可以少写很多的帮助信息,因为名字就是自解释的。

2014-12-27

模块化的nf-HiPAC

原版的nf-hipac需要为内核打patch,且只支持较低版本的内核,构建起来相对比较麻烦。 模块化后的nf-hipac可以直接作为内核可加载模块编译,且适配了高版本的Linux内核。为了移植工作简化,去掉了和iptables模块的联动支持!

2014-11-21

配置文件还有一些other

代码和配置iptables配置文件,还有一些别的东西

2010-04-16

关于linux内核以及其他个人体会的文集

本文集是我用将近两年的时间写成的,大多数文章是关于linux内核的,另外还有一些我自己对计算机的理解,还有一些历史,音乐方面的东西。适合于对linux内核思想感兴趣的阅读,文章偏重于对于思想的理解。

2009-09-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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