迫于低俗的广告 求款路由器

2022-01-01 15:32:25 +08:00
 Ptu2sha
百元左右 可以后台添加拦截域名的
3785 次点击
所在节点    问与答
23 条回复
hronro
2022-01-02 18:50:31 +08:00
@documentzhangx66 #20

感觉你有点较真了。

1. 我说的是「一大部分」,不是「大部分」。如果是我没表达清楚,那我现在更正一下,我是指有相当数量的包不用解密,这个占比具体有多少,我没做过测试我也不清楚。

2. 我说的那部分不用解密的包,是指从 SNI 拿到 host 之后,发现这个 HOST 压根不在规则列表里面,所以可以跳过不用处理的包,以及在规则里直接用 HOST 就能判断是广告的包,这两个部分加在一起的总和。占比相当于是 「(非广告的包 + HOST 广告规则的包)/ 所有的 TCP 包」,而你对比的占比则是「 HOST 广告规则的包 / 所有广告规则的包」,拿这两个来比较是没有意义的。

3. 我其实想说的重点是 UDP 啊。TCP 的包再怎么增加延迟都无所谓,只要性能不是差的离谱就行,而广告基本都是 TCP 。而延迟敏感的 UDP 直接不处理就习了,反正 UDP 里也不太可能有广告。
documentzhangx66
2022-01-02 19:24:49 +08:00
@hronro

1.不是较真,我以前,还真没去看过 AdBlock 的规则列表,只是见过它自动更新。

看你上一条评论这么一说,我有点好奇了,于是去看了一眼最新的规则列表里的内容,它的 URL 都发在上一条回复你的评论里了。

结论也正如我上一条回复你的评论,全 hostname 的规则,真的不多。

不多的意思是,我原本和你看法一样,以为至少百分之七八十应该是这种纯 hostname 的规则,结果我猜错了...


2.你这说法没问题,没发现自然就跳过了。

但问题是,就算没发现,你仔细想想它的实现细节:

每条 tcp 流做了分割后,对分割后的数据包或者说是数据结构,都要尝试提取一下 SNI-hostname ;

接着还要拿到一个巨大的列表里去做字符串匹配,这一来一回,

对于 CPU 来说,字符串的匹配与列表的索引结构,多少条存取与对比指令的周期给浪费了;

而对于运行速度更慢的内存来说,这些操作还涉及到一堆 malloc 或 realloc 开销,造成更多的时间浪费,就算是极端优化后用预先开辟的环状内存结构,整块内存的存取也需要花费几次内存周期;

最后这些网络数据包还得先缓存到网卡甚至内存中,缓存的数据要处理还得经过系统设备与系统两个队列,最好的方案也是 IOCP 或 epoll 甚至 DMA ,就算如此,它们每次进行系统设备或系统队列的存取,都得来一次总线级别的中断,这在时间上的代价也是相当的大。

你如果不打游戏 + 不大流量下载 + 不压榨路由器 + 路由器买的是非常贵的,那么路由器在闲时,也许这些操作加起来还不到 1 个 ms 的延迟开销,你自然无所谓。

但如果你打游戏 + 大流量下载 + 压榨路由器 + 路由器买的是高性价比版本,那么路由器内各本来各配件的性能不会太高,且工作负载不低,同时你还跑一堆小脚本来压榨它,这样一搞,它处理 sni-hostname 时,对整个系统的处理所造成的延迟就会更大。


3.现在的 http/https ,除了极少骚操作之外,其他基本上都是 TCP 的。另外,运营商也会对 UDP 的优先级做了降级处理。并且很多公司 /单位,因为买了安全设备,比如流控、防火墙、WAF 、入侵检测等等,这些安全设备里往往都有 UDP 防范,所以很多专业的 APP 甚至游戏,考虑了这个问题,当 UDP 环境很差时,很少会用 UDP 。
ak47947
2022-01-04 10:52:47 +08:00
这个不错,我回去试试 dns 的方案

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/825660

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX