OpenWrt开启Software/Hardware Flow Offloading后iOS通知推送延迟问题的溯源及一点解决办法

这篇具有很好参考价值的文章主要介绍了OpenWrt开启Software/Hardware Flow Offloading后iOS通知推送延迟问题的溯源及一点解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

更新:2023年10月Openwrt官方释出最新的23.05.0版本,内核更新至Linux Kernel 5.15.134,理论上应该解决这个问题了。
同时声明:将本文章设置为VIP文章完全为CSDN官方所为,本人长期不使用此账号并对此毫不知情!


实际上这个问题是我在将路由器刷成OpenWrt后偶然发现的。本来自使用的路由器是AX3 Pro,但是使用一段时间后发现这个路由器对IPv6的分配策略上有着不小的问题:本地运营商下发了/60的前缀后,此路由器并不会自动将此段地址切割以供二级路由使用,导致二级路由只能分配到/64的IPv6地址,无法继续下发地址,虽然在二级路由上可以使用NAT技术使下挂设备使用IPv6网络,但是这样显然违背了IPv6设计的初衷;其次,AX3 Pro默认将IPv6防火墙完全打开,同时无法在管理页面将此防火墙关闭,导致无法从公网访问到路由器后面的IPv6设备,这也明显阻碍了从外界管理内网设备的需求。所以,只能无奈舍弃这款路由器而选择可以刷入OpenWrt的路由器(OpenWrt对于IPv6及相关设置的支持良好),选择了搭载MT7621+MT7615的路由器解锁SSH权限并刷入了OpenWrt系统。
openwrt offload,网络

图1 MT7621官方数据参数

刷入系统几天后,偶然在一次聊天中发现iOS的消息通知推送有了延迟,通知框最迟的时候显示的是将近十分钟前的消息。于是用另一台设备发送测试消息,发现只要设备空闲超过两分钟,iOS的通知消息便有了明显的延迟。起初怀疑是官方的OpenWrt版本使用的都是开源驱动,对第三方设备的支持并不那么良好,于是自己拉取源码,修改编译选项将开源驱动换为MTK官方的闭源驱动编译出固件,再次刷入后发现问题仍然存在,但是后来换成完全基于MTK官方驱动且可以完全调用MT7621的硬件加速功能的Padavan系统后就不再存在消息延迟的问题。这个问题很令人感到困惑,本以为是驱动造成的问题,但是同样使用了闭源驱动,两个系统却有不一样的表现,只能是OpenWrt可能在某些关于网络的实现上有问题,但具体是哪里的问题,实在是不太好发现。于是在各个有关网络的论坛内搜索有没有类似的情况出现,终于在这个帖子内找到了遇到过类似问题的人: iPhone 推送通知延迟,这种情况出现在只连接 WIFI 的情况下。并且下面有网友给出了一种可能的解决办法。
openwrt offload,网络
图2 相似问题的帖子

openwrt offload,网络
图3 网友给出可能的解决方案

openwrt offload,网络
图4 自编译固件Turbo ACC管理页面

这里涉及到一些Apple设备的通知消息推送的机制,Apple设备的推送服务和主程序是独立的,每次Apple设备启动系统后,推送服务便创建一条与以下网段:
  • 17.249.0.0/16
  • 17.252.0.0/16
  • 17.57.144.0/22
  • 17.188.128.0/18
  • 17.188.20.0/23

之中任一推送服务器的TCP长连接(事实上Apple Inc.拥有17.0.0.0/8一整条A类网段…),并每隔十分钟发送一次心跳包以Keep Alive。
openwrt offload,网络

图5 APNS使用的协议与端口

以上帖子是最接近解决问题的方法了,其他帖子甚至只有“同道中人”在反馈问题甚至没有任何可靠的解决方法。按照上面给出的方法在OpenWrt管理页面中关闭软/硬件加速,经过一段时间测试,确实消除了推送延迟的问题,但关闭此选项却带来了更大的问题:网速的极大下降。上面提到的MT7621参数表可以看出这颗CPU虽然有着双核四线程,主频仅有0.88GHz,但内置的硬件加速功能却可以带动上下同时1Gbps的网络流量。原厂固件一般搭配专用的闭源驱动来驱动这一功能:
文章来源地址https://www.toymoban.com/news/detail-682824.html

到了这里,关于OpenWrt开启Software/Hardware Flow Offloading后iOS通知推送延迟问题的溯源及一点解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp:查询APP是否开启通知权限

    app.vue

    2024年02月14日
    浏览(33)
  • uniapp开启消息通知/提示(使用uniPush)

    亲爱的小伙伴们,最近对uniPush有稍许研究,当前研究出一些心得,现在分项给大家,希望对大家的uniapp之路有所帮助。本次的教程是教会你如何使用uniPush自定义消息通知,同时还附带添加消息提示音添加,多的不说少的不唠,下边就让我来给你们分享一下我的经验吧。 开发

    2024年02月16日
    浏览(28)
  • 使用Privoxy为Openwrt的ssrplus开启http代理服务器

    假设socks5代理在1080端口 打开 /etc/config/privoxy 将其默认配置清空,并修改为 保存重启 privoxy (完整的配置如下,可以自行添加) 在openwrt的防火墙设置中打开http代理的端口,实验室其他Ubuntu主机可以直接通过环境变量设置http/https代理,在进行wget、curl和git等相关操作时,都会

    2024年02月08日
    浏览(42)
  • Openwrt设置开启802.11r、纯AP模式、自动剔除弱信号

    家不大,墙很多,1台路由器无法覆盖完全,遂产生用多台无线AP、开启802.11r实现无线漫游的想法。 最初是用集客的方案,简单直接效果好,但是需要旁挂一个ac;如果主路由刷成集客盒子(相当于ac+路由+拨号),虽然可以拿掉旁挂的ac,但是拿不到ipv6,遂舍弃。 搜索资料,

    2024年02月06日
    浏览(33)
  • 【iOS】通知原理

    我们可以通过看通知的实现机制来了解通知中心是怎么实现对观察者的引用的。由于苹果对Foundation源码是不开源的,我们具体就参考一下GNUStep的源码实现。GNUStep的源码地址为:GNUStep源码GitHub下载地址, 具体源码可以进行查看。 通知全局对象是一个名为 NCTbl 的结构体,里头

    2024年02月14日
    浏览(30)
  • 【iOS】单例、通知、代理

    单例模式在整个工程中,相当于一个全局变量,就是不论在哪里需要用到这个类的实例变量,都可以通过单例方法来取得,而且一旦你创建了一个单例类,不论你在多少个洁面中初始化调用了这个单例方法取得对象,它们所有的对象都是指向的同一块内存的存储空间(即单例

    2024年02月15日
    浏览(29)
  • 小米AX6S刷OpenWrt和开启OpenClash,及刷回官网固件

    简 述: 闲暇,折腾下新购 小米AX6S,刷下 OpenWrt ,初次接触记录下。以及开启 OpenClash + clash-rules 的进阶使用 本文初发于 “ 偕臧的小站 ”,同步转载于此。 miwifi_rb03_firmware_3e872_1.0.54.bin [官方 2022.08.24] miwifi_rb03_firmware_stable_1.2.7.bin [官方 2022.03] 可刷机固件,默认开启 telnet 先刷

    2024年02月09日
    浏览(150)
  • [Docker实战] 旭日X3派上Docker Openwrt +Samba 实现局域网NAS && 开启AP模式

    ​ 🌈 博客个人主页 : Chris在Coding 🎥 本文所属专栏 :[旭日X3派]    [Docker实战] ❤️  前置学习专栏 :[Linux学习] ⏰  我们仍在旅途                                                                                     目录         1. 安装系统         

    2024年02月19日
    浏览(29)
  • Android,ios,安卓app推送消息通知,java后台向手机推送app的通知教程

    个推是商用级的移动应用消息推送云服务供应商,客户端 SDK 支持 Android 和 iOS 两大平台,开发者集成 SDK 后,可以通过个推强大的 web 端及丰富的 API 开放接口,发送推送消息、统计分析推送效果。可有效提高 App 活跃度,增加用户留存率。 如果您还没有个推 账号,可在 个推

    2024年02月04日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包