Ilpo Jarvinen [2]:“我认为我们无法阻止恶意用户找到一些方法绕开典型、合法的用例中的调整和优化。”第一个变化(参见 中的 “Abstract tp->highest_sack accessing & point to next skb”)是在 SACK 选项只包含比已经选择性应答的数据的序列号高的数据信息时优化缓冲策略。通常来讲,这意味着在未完成的窗口中还存在一个已经报告的漏洞,而新数据在窗口的末端已经被选择性应答。对于常规操作这很常见。这个补丁通过把已缓存的引用从一个序列号转换为指向队列中最高的包(过去已经选择性应答)的指针从而对此情况加以优化。通过这一信息,接下来的补丁(参见 “Rewrite SACK block processing & sack_recv_cache use”)通过缓存的指针作为列表遍历的起点就可以在处理 SACK 时只处理比缓存的值更高的数据,这为遍历列表节省了大量的工作。
方法 | 已处理的应答 | SACK 处理中已经扫描的包 | 经历的时间 | CPU 使用率 | 每个应答的取样滴答数 | 每传输 1KB 的取样滴答数 |
基准 | 252,955 | 0 | 1:02 | 22% | 1.72 | 0.56 |
定制,不启用 SACK | 498,275 | 0 | 2:59 | 9% | 1.47 | 1.03 |
定制,启用 SACK | 534,202 | 755,368,500 | 12:47 | 33% | 10.87 | 8.13 |
定制,启用 pre-2.6.25 上的 SACK | 530,879 | 2,768,229,472 | 10:42 | 49% | 13.6 | 10.07 |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |