网络知识 娱乐 对称性NAT提高P2P成功率

对称性NAT提高P2P成功率

一、背景

通过云后台统计发现,随着设备销量的增加,我们的流量支出成本越来越大,导致我们销售的设备成本后置;进一步发现流量支出的方向包括云存储文件下载、网页下载、音视频通话等,通过服务器的流量包消费情况,发现音视频消耗流量占比超过90%,结论是流量成本核心支出部分。再结合后台的用户APP与设备拉流的成功率统计,近几个月的P2P成功率不足40%, 还在环比降低的趋势中,降低音视频通话成本成为一个核心问题。

逻辑架构图


对称性NAT提高P2P成功率

音视频通话架构图

问题分析

我们的问题是P2P成功率低,从而引申除了为什么P2P成功率低,最后发现是NAT的类型有关。

对称性NAT提高P2P成功率

NAT检测流程图

n对称性NAT类型定义n/**n * NAT穿透信息n * #define kNATType_Unknown 0 //Unknown 不知道n * #define kNATType_UdpBlocked 1 //UdpBlocked UDP阻止n * #define kNATType_PUBN 2 //OpenInternet 开放式n * #define kNATType_PUBF 3 //SymmetricUdpFirewall 对称UDP防火墙n * #define kNATType_FC 4 //FullCone 完全锥形n * #define kNATType_RC 5 //RestrictedCone 限制型锥形n * #define kNATType_PC 6 //PortRestrictedCone 端口限制锥n * #define kNATType_SN 7 //Symmetric 对称性n */

NAT穿越组合

对称性NAT提高P2P成功率

NAT穿越组合

根据组合发现,最后2组NAT是无法穿透的,我们的P2P无法穿透,通过数据分析对称性NAT导致无法穿透的占比更大,结果是发现现在很多运营商NAT的安全性提高了, 都是采用了对称性NAT①。

对称性NAT端口预测数收集

1、对称性NAT呈现出Hash散列分布(有Hash冲突)

对称性NAT提高P2P成功率

Hash散列分布

2、对称性NAT呈现出Hash散列分布(没有Hash冲突)

对称性NAT提高P2P成功率

Hash散列分布

3、对称性NAT呈现随机性

对称性NAT提高P2P成功率

随机性

4、对称性NAT呈现出单调性

对称性NAT提高P2P成功率

单调递增

数据收集与分析结论

结论:对称性NAT是可以预测的,通过提高端口的测试范围,来提高连通的概率。

根据目前的测试数据我将对称性NAT端口分配情况分为3种:

1、周期单调递增分配 (在一个端口范围内,进行增长到最大值后,重新再从范围内最小值开始增加。)

2、范围内随机分配(在一个指定的端口范围内随机分配)

3、根据ip与端口4元组进行hash分配, 结合测试发现每次hash后的取值范围大概在2000,又因为端口的总数为65535,初步结论经过32次左右的hash在不产生hash碰撞的情况下,是可以完整的确认整个hash分配的规律 .

备注:不同的4元组hash到相同的端口范围, 是有递增的规律的。


附注:

①对称性NAT是指,我们的设备连接互联网时,运营商的NAT会进行IP与PORT映射,对称性NAT会根据访问的目标IP与PORT专门生成专门的映射,如果目标的IP与PORT任何一个数据发生改变,运营商会根据算法重新给你分配一组映射, 这样目标服务器如果尝试跟你进行连接, 只能对运营商重新分配的映射进行预测, 这也是对称性NAT端口猜测的由来。


觉得对你有帮助的话,给我点个赞,谢谢各位大佬。