苹果IPv6审核解决方案
2016年6月1号之后苹果应用上传AppStore审核要求全面支持ipv6,虽然只是一个简单的审核要求,但却给**区的开发者带来了不小的麻烦,因为众所周知的原因,国内的IPV6支持的比较差,所以包括ipv6环境测试在内的ipv6适配要求,着实是需要有一套解决方案。这里都是废话,下面就自己的解决方案开始做方案介绍。
代码层支持
按照苹果官方要求做iOS代码适配ipv6,这里涉及到了跟网络相关的第三方库的时候,按照我自己的经验,做如下解释:
1. Afnetworking ~3.1.0.(3.0.x版本正常都是支持ipv6的)
2. SDWebImage ~3.8.1.
(总之,跟网络相关的库升级到最新没错了。)
这里想说的是,基本的代码层根据苹果官方的要求做配置就好。参考链接
对于SDK的支持,请尽量使用最新版的SDK进行开发。
网络层支持
这里有个误解,我必须要强调下。
苹果要求支持IPv6,并不需要服务器兼容IPv6!!
iPhone向DNS64服务请求一个域名的时候,DNS64 server 会请求上游DNS,如果有IPV6的地址的话返回V6地址,如果没有的话,会请求一个IPv4地址,然后DNS64 server 会将这个地址转换为IPv6地址,供手机访问。
IPv6 Only网络下访问IPv4网络的时候,通过NAT64网关对IPv4和IPv6进行NAT,并不需要客户有实际的IPv6服务。
这张图展示的是利用Mac搭建IPv6环境,可以看出Mac作为上游与公网完全是通过V4网络连接的。完全没有V6的环境。
网络问题根源
目前来看,绝大部分问题都是由于苹果审核人员在V6网络下测试,到国内的服务器网络质量不佳,App本身的超时逻辑设置的时间较短,导致服务出现超时,最后归咎于IPv6。
解决方案
我们通过在海外部署转发节点,通过国际专线经过4层无状态转发到国内的游戏服务器,绕过拥堵的国际网络出口,业务无需再做任何修改。只需要修改域名的海外解析,解析到我们的海外转发节点即可。
- 利用全球专线部署,解决国家间网络互联问题,优化网络稳定性,提升过审概率;
- 通过智能DNS部署,解决纯IPv6网络下程序运行,不用修改程序,方便高效;
- 分钟级部署审核加速,省去复杂运维配置(转发集群配置,网络配置,高可用配置),无需修改任何业务代码;
限时免费
数据对比
24小时平均数据对比 | 经过转发 | 未经转发 |
---|---|---|
TCP平均响应时间 | 266ms | 376ms |
可用率 | 99.97% | 96.55% |
监控容灾
- 审核加速网络由两家独立运营商专线互做热备与负载均衡;
- ULB4采用动态路由的方式,通过路由器ECMP来实现集群的负载均衡,可是实现跨机房高可用,故障切换无感知;
- ULB4后端保证同一组服务至少有两组转发服务器,并且利用ULB4的健康检测功能,可自动剔除出现故障的转发服务器;
- 转发服务器的LVS会对所有游戏服务器进行健康检查,如游戏服务器出现故障,会自动剔除;
附:DNS64服务器搭建方案
待续