计数来源准入结果
---
type: devlog
title: 整机发送率 · 计数层和IFNET来源准入审查结果
date: 2026-10-20
status: partial
kind: validation
stage: P4
evidence: E2
metric: ios.device.network.send_rate
---
# IFNET来源有权限与共享阈值副作用,连接累计点不能统一当接口字节
文档类型devlog;基线ddfde989,关联[先行有限合同](/devlog/p4-device-network-counter-eligibility-plan-2026-10-20)。同一AI方案、实施、分离核读,无子代理。30/66、剩36,发送正式0/5、未验,Gate R未关。本批手机调用/写入/新run/产品改动0。
## Implementation Update · 2026-10-20
复用5件固定Apple XNU源,新增同commit kern_priv.c、udp6_usrreq.c及udp6_output.c三件64957B。最初网页接口两次cache miss,系统curl标准TLS每件一次成功,不禁验证或换版本;udp6_usrreq只转发输出,实际累计在另文件,先追加Source Scope Update后才下载udp6_output。全部8件591722B与固定URL/SHA核同。未访问手机、未更改SDK/产品、未请求私有entitlement或尝试关闭权限检查。
host主审提取35项原文/行区间及SHA;分离读法不导入主提取器,直接重读全部8原件核35引用,再以列零结束括号独立限定12个完整函数、核条件及调用先后。该方法只证明固定源文本和所列顺序,不是C控制流证明、运行覆盖或手机内核等价。工具/source/result及原件位于私有counter-eligibility前缀目录;没有新生产采集器。
## 1. 接口计数候选不是无副作用的通用只读枚举
固定[ntstat.c](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/bsd/net/ntstat.c#L3574)的IFNET lookup要求指定ifindex及至少1MiB阈值;non-OSX默认启用nstat_privcheck,检查PRIV_NET_PRIVILEGED_NETWORK_STATISTICS。查到接口后会降低共享if_data_threshold,并在变化时通知其他IFNET客户;release又按剩余源重算阈值或归零。这不能在既有只读探针合同下调用。
IFNET counts直接读if_ibytes/if_obytes;provider注册的watcher_add为NULL,AddAll公共分支遇NULL返回ENOTSUP,不能因有CreateInterfaceSource导出名就假设存在AddAll全接口枚举。这里只证明固定公开源,当前手机是否同实现、实际权限是否拒绝均未测;不把源权限前置伪装成手机EPERM。
[kern_priv.c](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/bsd/kern/kern_priv.c#L78)先允许MAC策略拒绝,再在条件下考虑root,随后允许策略grant,默认拒绝。未审具体MAC策略,因此既不能断言所有非root都失败,也不能以host root成功推手机可读。控制socket connect可成功与后续lookup权限检查是两个门。
## 2. 连接TCP/UDP与接口计数来源分离
| 固定源路径 | 原文事实 | 验收限制 |
| --- | --- | --- |
| ntstat_tcp_counts / udp_counts | 从inp_stat装载txbytes | 不等同if_obytes |
| TCP output非零len分支 | 普通与重传按len累计;强制1B probe另分支,累计后仍可能遇分配失败 | 不能断言每次累计对应最终成功上线路由包;TSO/其他失败路径未全审 |
| IPv4 UDP output | prepend前保存len;ip_output返回0且nstat_collect后累计len | len为该路径原mbuf数据长度,不含此处新增UDP/IP头;不外推全部provider |
| IPv6 UDP output | 保存原ulen,prepend后调用ip6_output;返回0后累计ulen | IPv4映射分支/扩展头/驱动及其他路径未全覆盖 |
| userland TU counts | 调提供方getvals callback | callback字节定义未证,不能套kernel PCB公式 |
IPv6 UDP累计后还可能因flow advisory将最终error置ENOBUFS;所以“API最终返回错误”等同“统计未累计”也不成立。此前仅写成功输出后累计的描述应限定为ip_output/ip6_output当时返回0,不是应用最终send结果。旧结果、反例及归档不回改;本增量承接更精确边界。
来源:[TCP](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/bsd/netinet/tcp_output.c#L2294)、[IPv4 UDP](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/bsd/netinet/udp_usrreq.c#L2008)、[IPv6 UDP](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/bsd/netinet6/udp6_output.c#L148)、[provider callback](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/bsd/net/ntstat.c#L2307)。这些是E1公开源候选机制;不是当前手机精确内核或所有网络栈的执行证据。
## 3. 分离结论、资源及下一步
8件591722B、35事实及12完整函数文本核同E2;主审0.012952秒/CPU0.012944秒/19152896B,分离0.015115秒/CPU0.014308秒/19578880B,符合10秒/96MiB门。三下载各1.113335/0.818705/1.080329秒,符合每件20秒/1MiB门;I/O峰unknown,没有性能优化结论。新增<8MiB、host>120GB,删除0,旧失败/24尾对象缺口保留。本批没有fresh手机状态,上一批64活run/128metadata/idle只作历史事实,不生成新容量。
**决策**:不实施IFNET直连手机候选;其权限、枚举和共享阈值问题未解决。不能以统一IP头修正常量把所有连接provider改成接口字节,不删除ACK、拟合偏移或调容差消反例。当前NetworkMonitor聚合连接计数与整机接口累计的可比性仍缺,产品scope/公式不偷偷改成目标流或业务正文。
下一有限工作:从已保管真实DTX producer原件核ConnectionDetection.kind的来源及实际provider区分能力,再决定能否建立分provider的独立抓包字节模型;先冻结根/范围/误差及完整性,不重跑旧抓包或随机手机探针。若原wire不能区分且各provider同层无法证明,则须先提出产品口径与不可验能力处理决策,不能继续堆无判别力测试。该研究仍不关闭Gate R,不进193、正式五轮、接收或其他指标。
知识/开发记录/总览/首页/时间线/机读及新不可变快照同批联动,站点完整资源门与链接另核;GitHub推送核同/GitLab只一次尝试。网站/通知配置债partial、公证暂缓/GPL正式分发门开放,无需用户操作。